logo

Puntatore di dereferenza C

Come già lo sappiamo 'cos'è un puntatore' , un puntatore è una variabile che memorizza l'indirizzo di un'altra variabile. L'operatore di dereferenziazione è noto anche come operatore indiretto, rappresentato da (*). Quando l'operatore indiretto (*) viene utilizzato con la variabile puntatore, è noto come dereferenziare un puntatore. Quando dereferenziamo un puntatore, verrà restituito il valore della variabile puntata da questo puntatore.

Perché usiamo il puntatore di dereferenziazione?

La dereferenziazione di un puntatore viene utilizzata per i seguenti motivi:

numero casuale Java
  • Può essere utilizzato per accedere o manipolare i dati archiviati nella posizione di memoria indicata dal puntatore.
  • Qualsiasi operazione applicata al puntatore dereferenziato influenzerà direttamente il valore della variabile a cui punta.

Osserviamo i seguenti passaggi per dereferenziare un puntatore.

  • Per prima cosa dichiariamo la variabile intera a cui punta il puntatore.
 int x =9; 
  • Ora dichiariamo la variabile puntatore intero.
 int *ptr; 
  • Dopo la dichiarazione di una variabile puntatore intero, memorizziamo l'indirizzo della variabile 'x' nella variabile puntatore 'ptr'.
 ptr=&x; 
  • Possiamo modificare il valore della variabile 'x' dereferenziando un puntatore 'ptr' come indicato di seguito:
 *ptr =8; 

La riga precedente modifica il valore della variabile 'x' da 9 a 8 perché 'ptr' punta alla posizione 'x' e il dereferenziamento di 'ptr', ovvero *ptr=8 aggiornerà il valore di x.

Combiniamo tutti i passaggi precedenti:

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

Produzione

Puntatore di dereferenza C

Consideriamo un altro esempio.

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

Nel codice sopra:

  • Dichiariamo due variabili 'x' e 'y' dove 'x' contiene un valore '4'.
  • Dichiariamo una variabile puntatore 'ptr'.
  • Dopo la dichiarazione di una variabile puntatore, assegniamo l'indirizzo della variabile 'x' al puntatore 'ptr'.
  • Poiché sappiamo che 'ptr' contiene l'indirizzo della variabile 'x', quindi '*ptr' è uguale a 'x'.
  • Assegniamo il valore di 'x' a 'y' con l'aiuto della variabile 'ptr', ovvero y=* ptr invece di usare la variabile 'x'.

Nota: secondo noi, se modifichiamo il valore di 'x', anche il valore di 'y' verrà modificato poiché il puntatore 'ptr' contiene l'indirizzo della variabile 'x'. Ma ciò non accade, poiché 'y' memorizza la copia locale del valore '5'.

Produzione

Puntatore di dereferenza C

Consideriamo un altro scenario.

logica del primo ordine
 #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; } 

Nel codice sopra:

  • Per prima cosa dichiariamo una variabile 'a'.
  • Quindi dichiariamo due puntatori, ovvero ptr1 e ptr2.
  • Entrambi i puntatori contengono l'indirizzo della variabile 'a'.
  • Assegniamo il valore '7' a *ptr1 e '6' a *ptr2. Il valore finale di 'a' sarebbe '6'.

Nota: se abbiamo più di un puntatore che punta alla stessa posizione, la modifica apportata da un puntatore sarà la stessa di un altro puntatore.

Produzione

Puntatore di dereferenza C