logo

C dereference pointer

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

C dereference pointer

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

C dereference pointer

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

C dereference pointer