logo

const Puntatore in C

Puntatori costanti

Un puntatore costante in C non può modificare l'indirizzo della variabile a cui punta, ovvero l'indirizzo rimarrà costante. Pertanto, possiamo dire che se un puntatore costante punta a qualche variabile, allora non può puntare a nessun'altra variabile.

Sintassi del puntatore costante

 *const ; 

La dichiarazione di un puntatore costante è la seguente:

 int *const ptr; 

Comprendiamo il puntatore costante attraverso un esempio.

 #include int main() { int a=1; int b=2; int *const ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

Nel codice sopra:

  • Dichiariamo due variabili, cioè a e b con valori 1 e 2, rispettivamente.
  • Dichiariamo un puntatore costante.
  • Per prima cosa assegniamo l'indirizzo della variabile 'a' al puntatore 'ptr'.
  • Quindi assegniamo l'indirizzo della variabile 'b' al puntatore 'ptr'.
  • Infine, proviamo a stampare il valore della variabile puntata da 'ptr'.

Produzione

const Puntatore in C

Nell'output sopra, possiamo osservare che il codice sopra produce l'errore 'assegnazione della variabile di sola lettura 'ptr''. Ciò significa che il valore della variabile 'ptr' contenuta da 'ptr' non può essere modificato. Nel codice sopra, stiamo cambiando il valore di 'ptr' da &a a &b, cosa non possibile con puntatori costanti. Pertanto, possiamo dire che il puntatore costante, che punta a qualche variabile, non può puntare a un'altra variabile.

Puntatore a costante

Un puntatore a costante è un puntatore attraverso il quale non è possibile modificare il valore della variabile puntata dal puntatore. L'indirizzo di questi puntatori può essere modificato, ma il valore della variabile puntata dal puntatore non può essere modificato.

Sintassi del puntatore a costante

 const * 

La dichiarazione di un puntatore alla costante è riportata di seguito:

 const int* ptr; 

Capiamolo attraverso un esempio.

    Innanzitutto scriviamo il codice in cui stiamo modificando il valore di un puntatore
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&a; ptr=&b; printf('Value of ptr is :%u',ptr); return 0; } 

Nel codice sopra:

  • Dichiariamo due variabili, ovvero aeb con i valori 100 e 200 rispettivamente.
  • Dichiariamo un puntatore a costante.
  • Per prima cosa assegniamo l'indirizzo della variabile 'a' al puntatore 'ptr'.
  • Quindi assegniamo l'indirizzo della variabile 'b' al puntatore 'ptr'.
  • Infine, proviamo a stampare il valore di 'ptr'.

Produzione

const Puntatore in C

Il codice precedente viene eseguito correttamente e mostra il valore di 'ptr' nell'output.

  • Ora scriviamo il codice in cui stiamo modificando il valore della variabile a cui punta il puntatore.
 #include int main() { int a=100; int b=200; const int* ptr; ptr=&b; *ptr=300; printf('Value of ptr is :%d',*ptr); return 0; } 

Nel codice sopra:

  • Dichiariamo due variabili, ovvero 'a' e 'b' con i valori 100 e 200 rispettivamente.
  • Dichiariamo un puntatore a costante.
  • Assegniamo l'indirizzo della variabile 'b' al puntatore 'ptr'.
  • Proviamo quindi a modificare il valore della variabile 'b' tramite il puntatore 'ptr'.
  • Infine, proviamo a stampare il valore della variabile puntata dal puntatore 'ptr'.

Produzione

const Puntatore in C

Il codice precedente mostra l'errore 'assegnazione della posizione di sola lettura '*ptr''. Questo errore significa che non possiamo modificare il valore della variabile a cui punta il puntatore.

Puntatore costante a una costante

Un puntatore costante a una costante è un puntatore, che è una combinazione dei due puntatori precedenti. Non può né cambiare l'indirizzo della variabile a cui punta né può cambiare il valore posto a questo indirizzo.

Sintassi

 const * const ; 

Di seguito è riportata la dichiarazione per un puntatore costante a una costante:

 const int* const ptr; 

Capiamolo attraverso un esempio.

 #include int main() { int a=10; int b=90; const int* const ptr=&a; *ptr=12; ptr=&b; printf('Value of ptr is :%d',*ptr); return 0; } 

Nel codice sopra:

  • Dichiariamo due variabili, ovvero 'a' e 'b' con i valori 10 e 90, rispettivamente.
  • Dichiariamo un puntatore costante a una costante e quindi assegniamo l'indirizzo di 'a'.
  • Proviamo a cambiare il valore della variabile 'a' tramite il puntatore 'ptr'.
  • Quindi proviamo ad assegnare l'indirizzo della variabile 'b' al puntatore 'ptr'.
  • Infine stampiamo il valore della variabile, che è puntato dal puntatore 'ptr'.

Produzione

const Puntatore in C

Il codice sopra mostra l'errore 'assegnazione della posizione di sola lettura '*ptr'' e 'assegnazione della variabile di sola lettura 'ptr''. Pertanto, concludiamo che il puntatore costante a una costante non può modificare né l'indirizzo né il valore puntato da questo puntatore.