Som vi allerede vet det 'hva er en peker' , er en peker en variabel som lagrer adressen til en annen variabel. Dereferanseoperatøren er også kjent som en indirektionsoperatør, som er representert med (*). Når indirektionsoperator (*) brukes med pekervariabelen, er den kjent som frareferanse til en peker. Når vi refererer til en peker, vil verdien av variabelen pekt av denne pekeren bli returnert.
Hvorfor bruker vi derereferansepeker?
Det brukes en peker som refererer på grunn av følgende årsaker:
- Den kan brukes til å få tilgang til eller manipulere dataene som er lagret på minnestedet, som pekes av pekeren.
- Enhver operasjon som brukes på den derefererte pekeren vil direkte påvirke verdien av variabelen den peker til.
La oss observere følgende trinn for å derifisere en peker.
- Først erklærer vi heltallsvariabelen som pekeren peker til.
int x =9;
- Nå erklærer vi heltallspekervariabelen.
int *ptr;
- Etter deklarasjonen av en heltallspekervariabel, lagrer vi adressen til 'x'-variabelen til pekervariabelen 'ptr'.
ptr=&x;
- Vi kan endre verdien av 'x'-variabelen ved å derifisere en peker 'ptr' som gitt nedenfor:
*ptr =8;
Linjen ovenfor endrer verdien av 'x'-variabelen fra 9 til 8 fordi 'ptr' peker til 'x'-plasseringen og derereferanse av 'ptr', dvs. *ptr=8 vil oppdatere verdien til x.
array vs arraylist
La oss kombinere alle trinnene ovenfor:
#include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;}
Produksjon
La oss vurdere et annet eksempel.
streng int
#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 koden ovenfor:
- Vi erklærer to variabler 'x' og 'y' der 'x' har en '4'-verdi.
- Vi erklærer en pekervariabel 'ptr'.
- Etter deklarasjonen av en pekervariabel, tildeler vi adressen til 'x'-variabelen til pekeren 'ptr'.
- Siden vi vet at 'ptr' inneholder adressen til 'x'-variabelen, så er '*ptr' det samme som 'x'.
- Vi tildeler verdien av 'x' til 'y' ved hjelp av 'ptr'-variabelen, dvs. y=* ptr i stedet for å bruke 'x'-variabelen.
Merk: Ifølge oss, hvis vi endrer verdien av 'x', vil verdien av 'y' også endres ettersom pekeren 'ptr' har adressen til 'x'-variabelen. Men dette skjer ikke, siden 'y' lagrer den lokale kopien av verdien '5'.
Produksjon
La oss vurdere et annet scenario.
java mens tilstand
#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 koden ovenfor:
- Først erklærer vi en 'a'-variabel.
- Deretter erklærer vi to pekere, dvs. ptr1 og ptr2.
- Begge pekerne inneholder adressen til en variabel.
- Vi tildeler '7'-verdien til *ptr1 og '6' til *ptr2. Den endelige verdien av 'a' vil være '6'.
Merk: Hvis vi har mer enn én peker som peker til samme plassering, vil endringen som gjøres av en peker være den samme som en annen peker.
Produksjon