După cum știm deja asta 'ce este un indicator' , un pointer este o variabilă care stochează adresa altei variabile. Operatorul de dereferință este cunoscut și ca operator indirect, care este reprezentat prin (*). Când operatorul indirect (*) este utilizat cu variabila pointer, atunci acesta este cunoscut ca dereferențierea unui pointer. Când dereferențăm un pointer, atunci valoarea variabilei indicată de acest pointer va fi returnată.
reducere barată
De ce folosim indicatorul de dereferențiere?
Dereferința unui pointer este utilizat din următoarele motive:
- Poate fi folosit pentru a accesa sau manipula datele stocate în locația de memorie, care este indicată de indicator.
- Orice operație aplicată indicatorului dereferențiat va afecta direct valoarea variabilei către care indică.
Să observăm următorii pași pentru a dereferenția un pointer.
- Mai întâi, declarăm variabila întreagă către care indică indicatorul.
int x =9;
- Acum, declarăm variabila pointer întreg.
int *ptr;
- După declararea unei variabile pointer întreg, stocăm adresa variabilei „x” la variabila pointer „ptr”.
ptr=&x;
- Putem schimba valoarea variabilei „x” prin dereferențierea unui pointer „ptr” după cum este prezentat mai jos:
*ptr =8;
Linia de mai sus modifică valoarea variabilei „x” de la 9 la 8, deoarece „ptr” indică locația „x” și dereferențiarea „ptr”, adică *ptr=8 va actualiza valoarea lui x.
Să combinăm toți pașii de mai sus:
#include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;}
Ieșire
Să luăm în considerare un alt exemplu.
#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; }
În codul de mai sus:
- Declarăm două variabile „x” și „y” unde „x” are o valoare „4”.
- Declaram o variabila pointer 'ptr'.
- După declararea unei variabile pointer, atribuim adresa variabilei „x” indicatorului „ptr”.
- După cum știm că „ptr” conține adresa variabilei „x”, deci „*ptr” este același cu „x”.
- Atribuim valoarea lui „x” lui „y” cu ajutorul variabilei „ptr”, adică y=* ptr în loc să folosiți variabila „x”.
Notă: După noi, dacă modificăm valoarea lui „x”, atunci valoarea lui „y” se va schimba, de asemenea, deoarece indicatorul „ptr” deține adresa variabilei „x”. Dar acest lucru nu se întâmplă, deoarece „y” stochează copia locală a valorii „5”.
Ieșire
Să luăm în considerare un alt scenariu.
sortare cu bule
#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; }
În codul de mai sus:
- În primul rând, declarăm o variabilă „a”.
- Apoi declarăm doi pointeri, adică ptr1 și ptr2.
- Ambele indicatori conțin adresa variabilei „a”.
- Atribuim valoarea „7” lui *ptr1 și „6” lui *ptr2. Valoarea finală a lui „a” ar fi „6”.
Notă: Dacă avem mai mult de un pointer care indică către aceeași locație, atunci modificarea făcută de un pointer va fi aceeași cu un alt pointer.
Ieșire