logo

C punter de desreferència

Com ja ho sabem 'Què és un punter' , un punter és una variable que emmagatzema l'adreça d'una altra variable. L'operador de desreferència també es coneix com a operador d'indirecció, que es representa amb (*). Quan s'utilitza l'operador d'indirecció (*) amb la variable punter, es coneix com a desreferenciar un punter. Quan desreferencem un punter, es retornarà el valor de la variable apuntada per aquest punter.

Per què utilitzem el punter de desreferenciació?

Desreferència d'un punter s'utilitza per les raons següents:

  • Es pot utilitzar per accedir o manipular les dades emmagatzemades a la ubicació de memòria, que és assenyalada pel punter.
  • Qualsevol operació aplicada al punter desreferenciat afectarà directament el valor de la variable a la qual apunta.

Observem els passos següents per desreferenciar un punter.

  • En primer lloc, declarem la variable entera a la qual apunta el punter.
 int x =9; 
  • Ara, declarem la variable punter entera.
 int *ptr; 
  • Després de la declaració d'una variable punter entera, emmagatzemem l'adreça de la variable 'x' a la variable punter 'ptr'.
 ptr=&x; 
  • Podem canviar el valor de la variable 'x' desreferenciant un punter 'ptr' com es mostra a continuació:
 *ptr =8; 

La línia anterior canvia el valor de la variable 'x' de 9 a 8 perquè 'ptr' apunta a la ubicació 'x' i la desreferenciació de 'ptr', és a dir, *ptr=8 actualitzarà el valor de x.

Combinem tots els passos anteriors:

 #include int main() { int x=9; int *ptr; ptr=&x; *ptr=8; printf('value of x is : %d', x); return 0;} 

Sortida

mètode tostring en java
C punter de desreferència

Considerem un altre exemple.

 #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; } 

En el codi anterior:

  • Declarem dues variables 'x' i 'y' on 'x' té un valor '4'.
  • Declarem una variable punter 'ptr'.
  • Després de la declaració d'una variable punter, assignem l'adreça de la variable 'x' al punter 'ptr'.
  • Com sabem que el 'ptr' conté l'adreça de la variable 'x', per tant '*ptr' és el mateix que 'x'.
  • Assignem el valor de 'x' a 'y' amb l'ajuda de la variable 'ptr', és a dir, y=* ptr en lloc d'utilitzar la variable 'x'.

Nota: segons nosaltres, si canviem el valor de 'x', el valor de 'y' també es canviarà ja que el punter 'ptr' conté l'adreça de la variable 'x'. Però això no passa, ja que 'y' emmagatzema la còpia local del valor '5'.

Sortida

C punter de desreferència

Considerem un altre escenari.

 #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; } 

En el codi anterior:

  • Primer, declarem una variable 'a'.
  • Aleshores declarem dos punters, és a dir, ptr1 i ptr2.
  • Tots dos punters contenen l'adreça de la variable 'a'.
  • Assignem el valor '7' al *ptr1 i '6' al *ptr2. El valor final de 'a' seria '6'.

Nota: si tenim més d'un punter apuntant a la mateixa ubicació, el canvi fet per un punter serà el mateix que un altre.

Sortida

C punter de desreferència