I puntatori in C

In C esistono molti tipi di variabili, tra queste c’è anche il puntatore.

Un puntatore non è una variabile che contiene un “valore”, ma contiene l’indirizzo di memoria di un’altra variabile. Si può usare il puntatore anche per puntare ad una struttura definita con struct.

La definizione di un puntatore può essere generalizzata in questo modo:

tipo *puntatore;

Ad esempio un puntatore ad un intero si scriverà così:

int *pa;

Con l’istruzione:

pa=&a;

Stiamo assegnando a pa l’indirizzo di memoria in cui è contenuto il valore della variabile a.
Scrivendo:

*pa=3;

Stiamo assegnando alla posizione di memoria a cui punta pa il valore tre, in pratica stiamo assegnando 3 alla variabile a.

Ecco un codice di esempio:

#include <stdio.h>

int main(){
    int a; //variabile di tipo intero
    int *pa; //variabile puntatore a intero

    a=3;
    pa = &a; // pa punta alla variabile a
    printf ("a vale: %d\n",a);
    *pa = 6; // cambiamo il valore della variabile a
    printf ("ora a vale: %d\n",a);

    return 0;
}

Compilando ed eseguendo otterremo:

a vale: 3
ora a vale: 6