Puntatori nella programmazione in C con esempi

Un puntatore è una variabile che memorizza lindirizzo di unaltra variabile. A differenza di altre variabili che contengono valori di un certo tipo, il puntatore contiene lindirizzo di una variabile. Ad esempio, una variabile intera contiene (o si può dire memorizza) un valore intero, tuttavia un puntatore intero contiene lindirizzo di una variabile intera. In questa guida, discuteremo dei puntatori nella programmazione in C con laiuto di esempi.

Prima di discutere dei puntatori in C, facciamo un semplice esempio per capire cosa si intende per indirizzo di una variabile.

Un semplice esempio per capire come accedere allindirizzo di una variabile senza puntatori?

In questo programma, abbiamo una variabile num di tipo int. Il valore di num è 10 e questo valore deve essere memorizzato da qualche parte nella memoria, giusto? Uno spazio di memoria è allocato per ogni variabile che contiene il valore di quella variabile, questo spazio di memoria ha un indirizzo. Ad esempio, viviamo in una casa e la nostra casa ha un indirizzo, che aiuta altre persone a trovare la nostra casa. Allo stesso modo in cui il valore della variabile viene memorizzato in un indirizzo di memoria, il che aiuta il programma C a trovare quel valore quando è necessario.

Quindi supponiamo che lindirizzo assegnato alla variabile num sia 0x7fff5694dc58, il che significa che qualunque valore assegneremo a num deve essere memorizzato nella posizione: 0x7fff5694dc58. Vedere il diagramma di seguito.

Risultato:

Value of variable num is: 10Address of variable num is: 0x7fff5694dc58

Un semplice esempio di puntatori in C

Questo programma mostra come viene dichiarato e utilizzato un puntatore. Ci sono molte altre cose che possiamo fare con i puntatori, ne abbiamo discusse più avanti in questa guida. Per ora, dobbiamo solo sapere come collegare un puntatore allindirizzo di una variabile.

Il punto importante da notare è: Il tipo di dati del puntatore e la variabile deve corrispondere, un puntatore int può contenere lindirizzo di una variabile int, allo stesso modo un puntatore dichiarato con il tipo di dati float può contenere lindirizzo di una variabile float. Nellesempio seguente, il puntatore e la variabile sono entrambi di tipo int.

Risultato:

Address of variable num is: 0x7fff5694dc58

Puntatori C – Operatori utilizzati con i puntatori

Parliamo degli operatori & e * utilizzati con i puntatori in C.

“Indirizzo di” (&) Operatore

Abbiamo già visto nel primo esempio che possiamo visualizzare lindirizzo di una variabile utilizzando la e commerciale segno. Ho utilizzato & num per accedere allindirizzo della variabile num. Loperatore & è anche noto come operatore “Indirizzo di”.

printf("Address of var is: %p", &num);

Punto da notare:% p è un identificatore di formato utilizzato per visualizzare lindirizzo in formato esadecimale.
Ora che sai come ottenere lindirizzo di una variabile ma come memorizzare quellindirizzo in qualche altra variabile? È qui che entrano in scena i puntatori. Come accennato allinizio di questa guida, i puntatori nella programmazione C vengono utilizzati per contenere lindirizzo di unaltra variabile.

Il puntatore è proprio come unaltra variabile, la differenza principale è che memorizza lindirizzo di unaltra variabile anziché un valore.

Operatore “Value at Address” (*)

Loperatore * è anche noto come operatore Value at address.

Come dichiarare un puntatore ?

Quelli precedenti sono i pochi esempi di dichiarazioni di puntatori.Se hai bisogno di un puntatore per memorizzare lindirizzo di una variabile intera, il tipo di dati del puntatore dovrebbe essere int. Stesso caso con gli altri tipi di dati.

Utilizzando loperatore * possiamo accedere al valore di una variabile tramite un puntatore.
Ad esempio:

double a = 10;double *p;p = &a;

* p ci darebbe il valore della variabile a. La seguente dichiarazione mostrerebbe 10 come output.

printf("%d", *p);

Allo stesso modo se assegniamo un valore a * puntatore come questo:

*p = 200;

Cambierà il valore di v ariabile a. Listruzione precedente cambierà il valore di a da 10 a 200.

Esempio di puntatore che dimostra luso di & e *

Risultato :

Value of variable var is: 10Value of variable var is: 10Address of variable var is: 0x7fff5ed98c4cAddress of variable var is: 0x7fff5ed98c4cAddress of pointer p is: 0x7fff5ed98c50

Facciamo qualche altro esempio per capirlo meglio –
Supponiamo di avere una variabile char ch e un puntatore ptr che contiene lindirizzo di ch.

char ch="a";char *ptr;

Leggi il valore di ch

printf("Value of ch: %c", ch);orprintf("Value of ch: %c", *ptr);

Modifica il valore di ch

ch = "b";or*ptr = "b";

Il codice precedente sostituirà il valore “a” con ” b .

Riuscite a indovinare loutput del seguente programma C?

Output:

Address of var is: 0x7fff5d027c58Address of var is: 0x7fff5d027c58Value of var is: 10Value of var is: 10Value of var is: 10Value of pointer p is: 0x7fff5d027c58Address of pointer p is: 0x7fff5d027c50

Altri argomenti sui puntatori

1) Puntatore a puntatore – Un puntatore può puntare a un altro puntatore (il che significa che può memorizzare lindirizzo di un altro puntatore), tali puntatori sono noti come puntatore doppio O puntatore a puntatore.

2) Passaggio di puntatori a una funzione – I puntatori possono anche essere passati come argomenti a una funzione, usando questa caratteristica una funzione può essere chiamata per riferimento così come un array può essere passato a una funzione durante la chiamata.

3) Puntatori a funzione – Un puntatore a funzione è proprio come un altro puntatore, viene utilizzato per memorizzare lindirizzo di una funzione. Il puntatore a funzione può essere utilizzato anche per chiamare una funzione nel programma C.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *