Som vi redan vet det 'vad är en pekare' , är en pekare en variabel som lagrar adressen till en annan variabel. Dereference-operatorn är också känd som en indirektionsoperator, som representeras av (*). När inriktningsoperator (*) används med pekarvariabeln kallas den därifrån en pekare. När vi refererar bort en pekare kommer värdet på variabeln som pekas av denna pekare att returneras.
Varför använder vi dereferencing pointer?
En pekare används av följande skäl:
- Den kan användas för att komma åt eller manipulera data som lagras på minnesplatsen, som pekas av pekaren.
- Varje operation som tillämpas på den referenserade pekaren kommer att direkt påverka värdet på variabeln som den pekar på.
Låt oss observera följande steg för att avreferens en pekare.
- Först deklarerar vi heltalsvariabeln som pekaren pekar på.
int x =9;
- Nu deklarerar vi heltalspekarvariabeln.
int *ptr;
- Efter deklarationen av en heltalspekarvariabel lagrar vi adressen till variabeln 'x' till pekvariabeln 'ptr'.
ptr=&x;
- Vi kan ändra värdet på variabeln 'x' genom att avleda en pekare 'ptr' enligt nedan:
*ptr =8;
Ovanstående rad ändrar värdet på variabeln 'x' från 9 till 8 eftersom 'ptr' pekar på 'x'-platsen och däravledning av 'ptr', dvs *ptr=8 uppdaterar värdet på x.
Låt oss kombinera alla ovanstående steg:
#include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;}
Produktion
Låt oss överväga ett annat exempel.
#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; }
I ovanstående kod:
- Vi deklarerar två variabler 'x' och 'y' där 'x' har ett '4'-värde.
- Vi deklarerar en pekarvariabel 'ptr'.
- Efter deklarationen av en pekarvariabel tilldelar vi adressen till variabeln 'x' till pekaren 'ptr'.
- Eftersom vi vet att 'ptr' innehåller adressen till variabeln 'x', så är '*ptr' detsamma som 'x'.
- Vi tilldelar värdet på 'x' till 'y' med hjälp av 'ptr'-variabeln, d.v.s. y=* ptr istället för att använda variabeln 'x'.
Notera: Enligt oss, om vi ändrar värdet på 'x', kommer värdet på 'y' också att ändras eftersom pekaren 'ptr' innehåller adressen till variabeln 'x'. Men detta händer inte, eftersom 'y' lagrar den lokala kopian av värdet '5'.
Produktion
Låt oss överväga ett annat scenario.
#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; }
I ovanstående kod:
- Först deklarerar vi en 'a'-variabel.
- Sedan förklarar vi två pekare, dvs ptr1 och ptr2.
- Båda pekarna innehåller adressen till en variabel.
- Vi tilldelar värdet '7' till *ptr1 och '6' till *ptr2. Det slutliga värdet på 'a' skulle vara '6'.
Obs: Om vi har mer än en pekare som pekar mot samma plats, kommer ändringen som görs av en pekare att vara densamma som en annan pekare.
Produktion