Ako to už vieme 'čo je ukazovateľ' , ukazovateľ je premenná, ktorá ukladá adresu inej premennej. Operátor dereferencie je známy aj ako nepriamy operátor, ktorý je reprezentovaný (*). Keď sa s premennou ukazovateľa používa nepriamy operátor (*), potom je známy ako dereferencovanie ukazovateľa. Keď dereferencujeme ukazovateľ, potom sa vráti hodnota premennej, na ktorú ukazuje tento ukazovateľ.
Prečo používame ukazovateľ dereferencovania?
Dereferencovanie ukazovateľa sa používa z nasledujúcich dôvodov:
- Dá sa použiť na prístup alebo manipuláciu s údajmi uloženými v pamäťovom mieste, na ktoré ukazuje ukazovateľ.
- Akákoľvek operácia aplikovaná na dereferencovaný ukazovateľ priamo ovplyvní hodnotu premennej, na ktorú ukazuje.
Pozrime sa na nasledujúce kroky na dereferencovanie ukazovateľa.
- Najprv deklarujeme celočíselnú premennú, na ktorú ukazuje ukazovateľ.
int x =9;
- Teraz deklarujeme premennú celočíselného ukazovateľa.
int *ptr;
- Po deklarácii celočíselnej premennej ukazovateľa uložíme adresu premennej 'x' do premennej ukazovateľa 'ptr'.
ptr=&x;
- Hodnotu premennej „x“ môžeme zmeniť dereferencovaním ukazovateľa „ptr“, ako je uvedené nižšie:
*ptr =8;
Vyššie uvedený riadok mení hodnotu premennej „x“ z 9 na 8, pretože „ptr“ ukazuje na umiestnenie „x“ a dereferencovanie „ptr“, t. j. *ptr=8 aktualizuje hodnotu x.
hashset vs hashmap
Skombinujme všetky vyššie uvedené kroky:
#include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;}
Výkon
Uvažujme o ďalšom príklade.
vyčistiť vyrovnávaciu pamäť npm
#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; }
Vo vyššie uvedenom kóde:
- Deklarujeme dve premenné 'x' a 'y', kde 'x' má hodnotu '4'.
- Deklarujeme premennú ukazovateľa 'ptr'.
- Po deklarácii premennej ukazovateľa priradíme adresu premennej 'x' smerníku 'ptr'.
- Keďže vieme, že „ptr“ obsahuje adresu premennej „x“, takže „*ptr“ je to isté ako „x“.
- Hodnotu „x“ priradíme „y“ pomocou premennej „ptr“, t.j. y=* ptr namiesto použitia premennej 'x'.
Poznámka: Podľa nás, ak zmeníme hodnotu 'x', potom sa zmení aj hodnota 'y', keďže ukazovateľ 'ptr' obsahuje adresu premennej 'x'. To sa však nestane, pretože 'y' ukladá lokálnu kópiu hodnoty '5'.
Výkon
Uvažujme o inom scenári.
#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; }
Vo vyššie uvedenom kóde:
- Najprv deklarujeme premennú „a“.
- Potom deklarujeme dva ukazovatele, t.j. ptr1 a ptr2.
- Oba ukazovatele obsahujú adresu premennej 'a'.
- Hodnotu '7' priradíme *ptr1 a '6' *ptr2. Konečná hodnota „a“ by bola „6“.
Poznámka: Ak máme viac ako jeden ukazovateľ smerujúci na to isté miesto, zmena vykonaná jedným ukazovateľom bude rovnaká ako v prípade iného ukazovateľa.
Výkon