Puntatori e Array · 3 min read · Nov 18, 2025
Linux C Programming Tutorial Parte 19: Puntatori e Array

Fino ad ora in questa serie di tutorial di programmazione C, abbiamo brevemente discusso le basi dei puntatori. Tuttavia, ci sono diversi altri concetti relativi ai puntatori che devono essere discussi. Quindi in questo tutorial, discuteremo il concetto di puntatori e array.
Prima di iniziare con i puntatori e gli array, facciamo rapidamente un ripasso del concetto di base dei puntatori stessi. I puntatori sono un tipo speciale di variabili che possono contenere indirizzi. Ad esempio, un puntatore ‘ptr’ a un carattere può essere dichiarato nel seguente modo;
char *ptr;E puoi usare il segno & per memorizzare un indirizzo in esso. Ecco un esempio:
char c = 'a';
ptr = &c;Quindi ora, il puntatore ‘ptr’ contiene l’indirizzo della variabile ‘c’. In alternativa, puoi anche dire che ‘ptr’ ora punta alla variabile ‘c’.
Per accedere o manipolare il valore della variabile a cui punta il puntatore, puoi usare l’operatore *. Ad esempio, per cambiare il valore della variabile c da ‘a’ a ‘b’, puoi usare il puntatore ‘ptr’ nel seguente modo:
*ptr = 'b';Il seguente programma dovrebbe darti un’idea migliore su questi concetti di base dei puntatori di cui abbiamo discusso finora:
#include
int main()
{
char c = 'a';
char *ptr = &c;
*ptr = 'b';
printf ("variabile c = %c", c);
return 0;
} Ecco l’output di questo programma:
variabile c = bQuindi puoi vedere che usando un puntatore, il valore di una variabile è stato cambiato.
Puntatori e Array
Man mano che trascorrerai sempre più tempo a scrivere e leggere codice C, osserverai che i puntatori e gli array sono spesso usati insieme. Ad esempio, puoi accedere agli elementi individuali di un array usando un puntatore. Considera il seguente pezzo di codice:
...
...
...
char arr[] = {'a','b','c','d','e'}
char *ptr;
ptr = &arr[0]
...
...
...Qui, il puntatore ‘ptr’ punta al primo elemento dell’array ‘arr’, che se parliamo in termini di indici, si trova nella posizione zero dell’array. Ora, puoi usare l’operatore * con ‘ptr’ per accedere/manipolare il valore a cui il puntatore sta puntando.
Procedendo, una volta che hai un puntatore che punta al primo elemento di un array, è facile accedere anche ad altri elementi dell’array. Ad esempio, se - nel contesto dell’estratto di codice sopra - usi la seguente espressione ovunque:
*(ptr+1)allora ti consente di accedere al secondo elemento dell’array, qualcosa che di solito fai nel seguente modo:
arr[1] Quindi, in effetti, aggiungere 1 a ‘ptr’ ti porta all’indirizzo del prossimo elemento nell’array, e usando * puoi accedere al valore memorizzato a quell’indirizzo. Allo stesso modo, aggiungere 2 ti porta al terzo elemento … e così via.
Ecco un programma che dovrebbe darti un’idea più chiara su ciò di cui abbiamo appena discusso:
#include
int main()
{
char arr[] = {'a','b','c','d','e'};
char *ptr = &arr[0];
for(int i=0;i Ecco l’output:
arr[0] è a
arr[1] è b
arr[2] è c
arr[3] è d
arr[4] è eQuindi puoi vedere, l’espressione ‘*(ptr+i)’ - con i che varia da 0 all’ultimo indice nell’array - ci ha permesso di accedere a tutti gli elementi dell’array.
NOTA 1: Il nome dell’array, quando usato nel codice, ti dà l’indirizzo base dell’array. Questo significa che il nome dell’array e l’indirizzo del suo primo elemento sono la stessa cosa. Quindi nel contesto di un array ‘arr’, ‘&arr[0]’ e ‘arr’ sono la stessa cosa. Questo si estende anche ad altri elementi, il che significa che &arr[2] può anche essere scritto come (arr+2) e così via.
NOTA 2: Estendendo ciò di cui abbiamo discusso nella nota sopra, ogni rappresentazione di elemento dell’array può essere scomposta in rappresentazione di puntatore. Ad esempio: arr[2] è equivalente a ‘*(arr + 2)’.
NOTA 3: Anche se puoi assegnare un indirizzo di array a un puntatore, viceversa non è valido. Inoltre, a differenza dei puntatori, non puoi usare gli operatori ++ o – con il nome dell’array. In termini generali, non puoi cambiare gli indirizzi in cui gli elementi dell’array sono originariamente localizzati.
Conclusione
Questo tutorial si è concentrato sul concetto di puntatori e array, su come sono correlati e su come gli elementi dell’array possono essere accessibili tramite puntatori. Verso la fine, abbiamo anche discusso alcuni punti importanti quando si tratta di codice che utilizza puntatori a array.
Prova questi concetti localmente sulla tua macchina per avere un’idea migliore di come funzionano queste cose, e in caso di dubbi o domande, lascia un commento qui sotto.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.