logo

C hivatkozási mutató

Mint azt már tudjuk 'mi az a mutató' , a mutató egy olyan változó, amely egy másik változó címét tárolja. A hivatkozási operátort indirekt operátornak is nevezik, amelyet (*) jelöl. Ha az indirekt operátort (*) használjuk a mutatóváltozóval, akkor ez az úgynevezett mutató hivatkozásának megszüntetése. Amikor egy mutatóra hivatkozunk, akkor a mutató által mutatott változó értéke kerül visszaadásra.

Miért használunk hivatkozási mutatót?

A mutató hivatkozásának megszüntetése a következő okok miatt történik:

  • Használható a mutató által mutatott memóriahelyen tárolt adatok eléréséhez vagy manipulálásához.
  • A hivatkozott mutatóra alkalmazott bármely művelet közvetlenül befolyásolja annak a változónak az értékét, amelyre mutat.

Figyeljük meg a következő lépéseket a mutató hivatkozásának megszüntetéséhez.

  • Először deklaráljuk azt az egész változót, amelyre a mutató mutat.
 int x =9; 
  • Most deklaráljuk az egész mutató változót.
 int *ptr; 
  • Egy egész mutatóváltozó deklarálása után az 'x' változó címét a 'ptr' mutatóváltozóba tároljuk.
 ptr=&x; 
  • Megváltoztathatjuk az 'x' változó értékét a 'ptr' mutató hivatkozásának megszüntetésével az alábbiak szerint:
 *ptr =8; 

A fenti sor az 'x' változó értékét 9-ről 8-ra módosítja, mert a 'ptr' az 'x' helyre mutat, és a 'ptr' hivatkozásának megszüntetése, azaz a *ptr=8 frissíti az x értékét.

Kombináljuk a fenti lépéseket:

 #include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;} 

Kimenet

C hivatkozási mutató

Nézzünk egy másik példát.

 #include int main() { int x=4; int y; int *ptr; ptr=&x; y=*ptr; *ptr=5; printf('The value of x is : %d',x); printf('
 The value of y is : %d',y); return 0; } 

A fenti kódban:

  • Két változót 'x' és 'y' deklarálunk, ahol az 'x' '4' értéket hordoz.
  • Egy 'ptr' mutatóváltozót deklarálunk.
  • Egy mutatóváltozó deklarálása után a 'ptr' mutatóhoz rendeljük az 'x' változó címét.
  • Mint tudjuk, hogy a 'ptr' tartalmazza az 'x' változó címét, így a '*ptr' ugyanaz, mint az 'x'.
  • Az 'x' értékét 'y'-hez rendeljük a 'ptr' változó segítségével, azaz y=* ptr az 'x' változó használata helyett.

Megjegyzés: Szerintünk, ha megváltoztatjuk az 'x' értékét, akkor az 'y' értéke is megváltozik, mivel a 'ptr' mutató az 'x' változó címét tartalmazza. De ez nem történik meg, mivel az „y” az „5” érték helyi másolatát tárolja.

Kimenet

C hivatkozási mutató

Nézzünk egy másik forgatókönyvet.

 #include int main() { int a=90; int *ptr1,*ptr2; ptr1=&a; ptr2=&a; *ptr1=7; *ptr2=6; printf('The value of a is : %d',a); return 0; } 

A fenti kódban:

  • Először deklarálunk egy „a” változót.
  • Ezután deklarálunk két mutatót, azaz a ptr1-et és a ptr2-t.
  • Mindkét mutató tartalmazza az 'a' változó címét.
  • A *ptr1-hez '7' értéket, a *ptr2-hez pedig '6' értéket rendelünk. Az „a” végső értéke „6” lenne.

Megjegyzés: Ha egynél több mutatónk mutat ugyanarra a helyre, akkor az egyik mutató által végrehajtott változtatás megegyezik egy másik mutatóval.

Kimenet

C hivatkozási mutató