C – Puntatori

Annunci

I puntatori in C sono facili e divertenti da imparare. Alcune attività di programmazione in C vengono eseguite più facilmente con i puntatori e altre attività, come lallocazione dinamica della memoria, non possono essere eseguite senza utilizzare i puntatori. Quindi diventa necessario imparare i puntatori per diventare un perfetto programmatore C. Cominciamo ad apprenderle in passaggi semplici e facili.

Come sai, ogni variabile è una posizione di memoria e ogni posizione di memoria ha il suo indirizzo definito a cui si può accedere utilizzando la e commerciale (&), che denota un indirizzo in memoria. Considera il seguente esempio, che stampa lindirizzo delle variabili definite –

Quando il codice precedente viene compilato ed eseguito, produce quanto segue risultato –

Address of var1 variable: bff5a400Address of var2 variable: bff5a3f6

Cosa sono i puntatori?

Un puntatore è una variabile il cui valore è lindirizzo di unaltra variabile, cioè lindirizzo diretto della posizione di memoria. Come qualsiasi variabile o costante, devi dichiarare un puntatore prima di utilizzarlo per memorizzare qualsiasi indirizzo di variabile. La forma generale di una dichiarazione di variabile del puntatore è –

type *var-name;

Qui, il tipo è il tipo base del puntatore; deve essere un tipo di dati C valido e var-name è il nome della variabile del puntatore. Lasterisco * utilizzato per dichiarare un puntatore è lo stesso asterisco utilizzato per la moltiplicazione. Tuttavia, in questa istruzione lasterisco viene utilizzato per designare una variabile come puntatore. Dai unocchiata ad alcune delle dichiarazioni di puntatori valide –

int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */char *ch /* pointer to a character */

Il tipo di dati effettivo del valore di tutti i puntatori, siano essi interi, float, carattere o altro , è lo stesso, un numero esadecimale lungo che rappresenta un indirizzo di memoria. Lunica differenza tra i puntatori di diversi tipi di dati è il tipo di dati della variabile o della costante a cui punta il puntatore.

Come usare i puntatori?

Ci sono alcune operazioni importanti, cosa che faremo molto frequentemente con laiuto dei puntatori. (a) Definiamo una variabile puntatore, (b) assegniamo lindirizzo di una variabile a un puntatore e (c) accediamo infine al valore allindirizzo disponibile nella variabile puntatore. Ciò viene fatto utilizzando loperatore unario * che restituisce il valore della variabile situata allindirizzo specificato dal suo operando. Il seguente esempio fa uso di queste operazioni –

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato –

Address of var variable: bffd8b3cAddress stored in ip variable: bffd8b3cValue of *ip variable: 20

Puntatori NULL

È sempre una buona pratica assegnare un valore NULL a una variabile puntatore nel caso in cui non si abbia un indirizzo esatto da assegnare. Questo viene fatto al momento della dichiarazione della variabile. Un puntatore a cui è assegnato NULL è detto puntatore nullo.

Il puntatore NULL è una costante con un valore zero definito in diverse librerie standard. Considera il seguente programma:

#include <stdio.h>int main () { int *ptr = NULL; printf("The value of ptr is : %x\n", ptr ); return 0;}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato –

The value of ptr is 0

Nella maggior parte dei sistemi operativi, ai programmi non è consentito accedere alla memoria allindirizzo 0 perché tale memoria è riservata dal sistema operativo. Tuttavia, lindirizzo di memoria 0 ha un significato speciale; segnala che il puntatore non è destinato a puntare a una posizione di memoria accessibile. Ma per convenzione, se un puntatore contiene il valore null (zero), si presume che punti a nulla.

Per verificare la presenza di un puntatore nullo, è possibile utilizzare unistruzione “if” come segue:

if(ptr) /* succeeds if p is not null */if(!ptr) /* succeeds if p is null */

Puntatori in dettaglio

I puntatori hanno molti ma semplici concetti e sono molto importanti per la programmazione C. I seguenti importanti concetti relativi ai puntatori dovrebbero essere chiari a qualsiasi programmatore C:

Sr.No. Concetto & Descrizione
1 Aritmetica dei puntatori

Ci sono quattro operatori aritmetici che possono essere usati nei puntatori: ++, -, +, –

2 Matrice di puntatori

Puoi definire matrici per contenere un numero di puntatori.

3 Puntatore al puntatore

C consente di avere un puntatore su un puntatore e così via.

4 Passaggio di puntatori a funzioni in C

Passaggio un argomento per riferimento o per indirizzo abilita la modifica dellargomento passato nella funzione chiamante dalla funzione chiamata.

5 Return puntatore da funzioni in C

C consente a una funzione di restituire un puntatore alla variabile locale, alla variabile statica e anche alla memoria allocata dinamicamente.

Pubblicità

Lascia un commento

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