Cos’è il puntatore in C?
Il puntatore in C è una variabile che memorizza l’indirizzo di un’altra variabile. Un puntatore può essere utilizzato anche per fare riferimento a un’altra funzione del puntatore. Un puntatore può essere incrementato / decrementato, cioè per puntare alla posizione di memoria successiva / precedente. Lo scopo del puntatore è quello di risparmiare spazio in memoria e ottenere tempi di esecuzione più rapidi.
Come usare i puntatori in C
Se dichiariamo una variabile v di tipo int, v memorizzerà effettivamente un valore.
v è uguale a zero ora.
Tuttavia, ogni variabile, a parte il valore, ha anche il suo indirizzo (o, semplicemente, dove si trova nella memoria). L’indirizzo può essere recuperato inserendo una e commerciale (&) prima del nome della variabile.
Se stampi l’indirizzo di una variabile sullo schermo, apparirà come un numero totalmente casuale (inoltre, può essere diverso da run a run).
Proviamolo in pratica con il puntatore in C esempio
L’output di questo programma è -480613588.
Cos’è un puntatore? Invece di memorizzare un valore, un puntatore y memorizzerà l’indirizzo di una variabile.
Variabile puntatore
Int * y = & v;
VARIABILE
|
POINTER
|
Un valore memorizzato in un indirizzo di archiviazione / memoria con nome
|
Una variabile che punta all’indirizzo di archiviazione / memoria di un’altra variabile
|
Dichiarazione di un puntatore
Come le variabili, i puntatori in C progra mming devono essere dichiarati prima di poter essere utilizzati nel programma. I puntatori possono essere denominati come si desidera purché obbediscano alle regole di denominazione di C. Una dichiarazione di puntatore ha la seguente forma.
data_type * pointer_variable_name;
Qui,
- data_type è il tipo di base del puntatore dei tipi di variabili C e indica il tipo di variabile a cui punta il puntatore.
- L’asterisco (*: lo stesso asterisco utilizzato per la moltiplicazione) che è un operatore di riferimento indiretto, dichiara un puntatore.
Vediamo alcune dichiarazioni di puntatore valide in questo tutorial sui puntatori in C:
Inizializza un puntatore
Dopo aver dichiarato un puntatore, lo inizializziamo come variabili standard con un indirizzo variabile. Se i puntatori nella programmazione C non sono inizializzati e utilizzati nel programma, i risultati sono imprevedibili e potenzialmente disastrosi.
Per ottenere l’indirizzo di una variabile, usiamo l’operatore e commerciale (&), posto prima del nome di una variabile di cui abbiamo bisogno dell’indirizzo. L’inizializzazione del puntatore viene eseguita con la seguente sintassi.
Sintassi del puntatore
pointer = &variable;
Di seguito viene fornito un semplice programma per l’illustrazione del puntatore:
Risultato:
Address stored in a variable p is:60ff08Value stored in a variable p is:10
Operatore |
Significato |
* |
Serve a 2 scopi
- Dichiarazione di un puntatore
- Restituisce il valore della variabile di riferimento
|
& |
Serve solo 1 scopo
- Restituzioni l’indirizzo di una variabile
|
Tipi di puntatori in C
Di seguito sono riportati i diversi tipi di puntatori in C:
Puntatore nullo
Possiamo creare un puntatore nullo assegnando un valore nullo durante la dichiarazione del puntatore. Questo metodo è utile quando non si dispone di alcun indirizzo assegnato al puntatore. Un puntatore nullo contiene sempre il valore 0.
Il seguente programma illustra l’uso di un puntatore nullo:
#include <stdio.h>int main(){int *p = NULL; //null pointerprintf("The value inside variable p is:\n%x”,p);return 0;}
Risultato:
The value inside variable p is:0
Puntatore vuoto
Nella programmazione C, un puntatore vuoto viene anche chiamato come puntatore generico. Non ha alcun tipo di dati standard. Un puntatore void viene creato utilizzando la parola chiave void. Può essere utilizzato per memorizzare un indirizzo di qualsiasi variabile.
Il seguente programma illustra l’uso di un puntatore void:
#include <stdio.h>int main(){void *p = NULL; //void pointerprintf("The size of pointer is:%d\n",sizeof(p));return 0;}
Risultato:
The size of pointer is:4
Puntatore jolly
Un puntatore si dice che sia un puntatore jolly se non viene inizializzato a nulla. Questi tipi di puntatori C non sono efficienti perché potrebbero puntare a una posizione di memoria sconosciuta che potrebbe causare problemi nel nostro programma e potrebbe portare al blocco del programma. Si dovrebbe sempre stare attenti quando si lavora con i puntatori selvaggi.
Il seguente programma illustra l’uso del puntatore jolly:
#include <stdio.h>int main(){int *p; //wild pointerprintf("\n%d",*p);return
read more