Som vi allerede ved det 'hvad er en pointer' , en pointer er en variabel, der gemmer adressen på en anden variabel. Dereferenceoperatoren er også kendt som en indirekte operator, som er repræsenteret ved (*). Når indirektionsoperator (*) bruges sammen med pointervariablen, er den kendt som der henviser til en pointer. Når vi dereferencer en pointer, returneres værdien af variablen, der peges af denne pointer.
Hvorfor bruger vi dereferencing pointer?
Dereference bruges en pointer af følgende årsager:
- Den kan bruges til at få adgang til eller manipulere de data, der er gemt på hukommelsesstedet, som peges af markøren.
- Enhver handling, der anvendes på den dereferencede pointer, vil direkte påvirke værdien af den variabel, den peger på.
Lad os observere følgende trin for at dereferere en pointer.
- Først erklærer vi den heltalsvariabel, som markøren peger på.
int x =9;
- Nu erklærer vi heltals pointer-variablen.
int *ptr;
- Efter erklæringen af en heltals pointer-variabel gemmer vi adressen på 'x'-variablen til pointer-variablen 'ptr'.
ptr=&x;
- Vi kan ændre værdien af 'x'-variablen ved at dereferere en pointer 'ptr' som angivet nedenfor:
*ptr =8;
Ovenstående linje ændrer værdien af 'x'-variablen fra 9 til 8, fordi 'ptr' peger på 'x'-placeringen og dereference af 'ptr', dvs. *ptr=8 vil opdatere værdien af x.
hvordan man finder blokerede numre på Android
Lad os kombinere alle ovenstående trin:
#include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;}
Produktion
Lad os overveje et andet 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 ovenstående kode:
- Vi erklærer to variable 'x' og 'y', hvor 'x' har en '4'-værdi.
- Vi erklærer en pointervariabel 'ptr'.
- Efter erklæringen af en pointervariabel tildeler vi adressen på 'x'-variablen til pointeren 'ptr'.
- Da vi ved, at 'ptr' indeholder adressen på 'x'-variablen, så er '*ptr' det samme som 'x'.
- Vi tildeler værdien af 'x' til 'y' ved hjælp af 'ptr'-variablen, dvs. y=* ptr i stedet for at bruge 'x'-variablen.
Bemærk: Ifølge os, hvis vi ændrer værdien af 'x', vil værdien af 'y' også blive ændret, da markøren 'ptr' har adressen på 'x'-variablen. Men dette sker ikke, da 'y' gemmer den lokale kopi af værdien '5'.
Produktion
Lad os overveje et andet scenarie.
gitterlayout
#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 ovenstående kode:
- Først erklærer vi en 'a'-variabel.
- Derefter erklærer vi to pointere, dvs. ptr1 og ptr2.
- Begge pointere indeholder adressen på en variabel.
- Vi tildeler '7'-værdien til *ptr1 og '6' til *ptr2. Den endelige værdi af 'a' ville være '6'.
Bemærk: Hvis vi har mere end én pointer, der peger på den samme placering, vil ændringen foretaget af en pointer være den samme som en anden pointer.
Produktion