logo

const Osoitin C:ssä

Jatkuvat osoittimet

C:n vakioosoitin ei voi muuttaa sen muuttujan osoitetta, johon se osoittaa, eli osoite pysyy vakiona. Siksi voidaan sanoa, että jos vakioosoitin osoittaa johonkin muuttujaan, se ei voi osoittaa mihinkään muuhun muuttujaan.

Vakioosoittimen syntaksi

 *const ; 

Vakioosoittimen ilmoitus annetaan alla:

 int *const ptr; 

Ymmärretään vakioosoitin esimerkin kautta.

 #include int main() { int a=1; int b=2; int *const ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

Yllä olevassa koodissa:

  • Ilmoitamme kaksi muuttujaa, eli a ja b arvoilla 1 ja 2.
  • Ilmoitamme jatkuvan osoittimen.
  • Ensin määritetään muuttujan 'a' osoite osoittimelle 'ptr'.
  • Sitten annamme muuttujan 'b' osoitteen osoittimelle 'ptr'.
  • Lopuksi yritämme tulostaa 'ptr':n osoittaman muuttujan arvon.

Lähtö

satunnainen ei javassa
const Osoitin C:ssä

Yllä olevassa lähdössä voimme havaita, että yllä oleva koodi tuottaa virheen 'vain luku -muuttujan 'ptr' määrittäminen. Se tarkoittaa, että muuttujan 'ptr' arvoa, jota 'ptr' pitää, ei voida muuttaa. Yllä olevassa koodissa muutamme 'ptr':n arvoa &a:sta &b:ksi, mikä ei ole mahdollista vakioosoittimilla. Siksi voidaan sanoa, että vakioosoitin, joka osoittaa johonkin muuttujaan, ei voi osoittaa toiseen muuttujaan.

Osoitin vakioon

Osoitin vakioon on osoitin, jonka kautta sen muuttujan arvoa, jonka osoitin osoittaa, ei voida muuttaa. Näiden osoittimien osoitetta voidaan muuttaa, mutta muuttujan arvoa, johon osoitin osoittaa, ei voi muuttaa.

Osoittimen syntaksi vakioon

 const * 

Vakion osoittimen ilmoitus annetaan alla:

 const int* ptr; 

Ymmärretään esimerkin kautta.

kokoinen lateksifontti
    Ensin kirjoitamme koodin, jossa muutamme osoittimen arvoa
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%u',ptr); return 0; } 

Yllä olevassa koodissa:

  • Ilmoitamme kaksi muuttujaa, eli a ja b arvoilla 100 ja 200.
  • Ilmoitamme osoittimen vakioksi.
  • Ensin määritetään muuttujan 'a' osoite osoittimelle 'ptr'.
  • Sitten annamme muuttujan 'b' osoitteen osoittimelle 'ptr'.
  • Lopuksi yritämme tulostaa 'ptr':n arvon.

Lähtö

const Osoitin C:ssä

Yllä oleva koodi toimii onnistuneesti, ja se näyttää 'ptr':n arvon lähdössä.

  • Nyt kirjoitetaan koodi, jossa muutamme sen muuttujan arvoa, johon osoitin osoittaa.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&b; *ptr=300; printf('Value of ptr is :%d',*ptr); return 0; } 

Yllä olevassa koodissa:

  • Ilmoitamme kaksi muuttujaa, eli 'a' ja 'b' arvoilla 100 ja 200.
  • Ilmoitamme osoittimen vakioksi.
  • Osoitamme muuttujan 'b' osoitteen osoittimelle 'ptr'.
  • Sitten yritämme muokata muuttujan 'b' arvoa osoittimen 'ptr' avulla.
  • Lopuksi yritämme tulostaa muuttujan arvon, jota osoittaa osoitin 'ptr'.

Lähtö

const Osoitin C:ssä

Yllä oleva koodi näyttää virheen 'vain luku -sijainnin määrittäminen '*ptr'. Tämä virhe tarkoittaa, että emme voi muuttaa sen muuttujan arvoa, johon osoitin osoittaa.

verkottumista ja tyyppejä

Vakioosoitin vakioon

Vakioosoitin vakioon on osoitin, joka on kahden yllä olevan osoittimen yhdistelmä. Se ei voi muuttaa sen muuttujan osoitetta, johon se osoittaa, eikä se voi muuttaa tähän osoitteeseen asetettua arvoa.

Syntaksi

 const * const ; 

Vakioosoittimen ilmoitus vakioon on annettu alla:

 const int* const ptr; 

Ymmärretään esimerkin kautta.

 #include int main() { int a=10; int b=90; const int* const ptr=&a; *ptr=12; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

Yllä olevassa koodissa:

  • Ilmoitamme kaksi muuttujaa, eli 'a' ja 'b' arvoilla 10 ja 90, vastaavasti.
  • Ilmoitamme vakioosoittimen vakiolle ja annamme sitten osoitteen 'a'.
  • Yritämme muuttaa muuttujan 'a' arvoa osoittimen 'ptr' kautta.
  • Sitten yritämme määrittää muuttujan 'b' osoitteen osoittimelle 'ptr'.
  • Lopuksi tulostetaan muuttujan arvo, jota osoittaa osoitin 'ptr'.

Lähtö

const Osoitin C:ssä

Yllä oleva koodi näyttää virheen 'vain luku -sijainnin '*ptr' määrittäminen ja 'vain luku -muuttujan 'ptr' määrittäminen. Tästä syystä päättelemme, että vakioosoitin vakioon ei voi muuttaa osoitetta eikä arvoa, joka osoittaa tämän osoittimen.