C e C++ sono i linguaggi di programmazione più comunemente usati in quanto sono le porte di base per principianti nel mondo della programmazione. Puntatori e riferimenti sono alcune delle strutture più utili fornite da questi linguaggi. I puntatori vengono usati in C e C++ e i riferimenti sono supportati in C++, Python e altri linguaggi.
Punti chiave
- I puntatori memorizzano gli indirizzi di memoria di variabili o oggetti, mentre i riferimenti fungono da alias per le variabili esistenti.
- I puntatori possono essere riassegnati a diversi indirizzi di memoria, mentre i riferimenti non possono essere modificati dopo l'inizializzazione.
- I puntatori richiedono la dereferenziazione esplicita per accedere al valore a cui puntano, mentre i riferimenti possono essere utilizzati direttamente, come la variabile originale.
Puntatore vs riferimento
Un puntatore è una variabile che riceve l'indirizzo di memoria di una variabile diversa e può essere inizializzato più volte nel programma a seconda di quante volte è necessario. Un riferimento è una variabile di programma alternativa e può essere inizializzata solo una volta nell'intero programma.

Un puntatore è una variabile che ha come valore l'indirizzo o la posizione di un'altra variabile. Possono essere inizializzati ovunque in un programma con operatori come '*' e '->'. Una variabile puntatore può anche essere resa nulla e supportano anche la reinizializzazione. Il tipo di dati di base dichiara i puntatori seguiti da un asterisco e dal nome del puntatore.
Un riferimento è una variabile con un altro nome per una variabile di programma già discreta. Non appena viene creata una variabile di riferimento, è necessario inizializzarla. Crea un alias di un'altra variabile. L'operatore & viene utilizzato per i riferimenti di progettazione. Sono costituiti dal tipo di dati di base seguito da "&" e dal nome della variabile.
Tavola di comparazione
Parametri di confronto | Pointer | Referenze |
---|---|---|
Definizione | La variabile che contiene l'indirizzo di memoria di un'altra variabile è chiamata variabile puntatore. | Un riferimento è un alias di un'altra variabile, un riferimento ad essa. |
Riferimento nullo | Un valore nullo può essere assegnato a un puntatore. | Una variabile di riferimento non ha assegnazione di valore nullo. |
Sintassi | Tipo di dati *PointerName; Dove Datatype è il tipo di dati di base e PointerName è il nome del puntatore dichiarato. | Tipo di dati &ReferenceName = AnotherVariable; Dove ReferenceName è il nome del riferimento e AnotherVariable è la variabile a cui si fa riferimento. |
Inizializzazione | È possibile creare puntatori non inizializzati. | I riferimenti non possono mai essere creati in un file non inizializzato |
Reinizializzazione | Le variabili puntatore possono essere inizializzate ripetutamente nel programma in base alle necessità. | Una variabile di riferimento può essere inizializzata solo una volta in un programma. |
Cos'è il puntatore?
In poche parole, un puntatore è una variabile che contiene la posizione di memoria o l'indirizzo di qualsiasi altra variabile in un programma. I puntatori sono funzionali in C e C++. Una variabile puntatore memorizza la posizione dell'indirizzo della variabile puntatore. Le variabili puntatore possono essere dichiarate e quindi possono essere inizializzate con la variabile il cui indirizzo deve essere determinato.
Inoltre, hanno chiarezza, poiché un puntatore intero può contenere solo l'indirizzo di una variabile intera. I puntatori hanno un chiaro modo di dichiarazione. Ad esempio, int *point è un puntatore a una variabile di tipo int e double *ABC è un puntatore a una variabile di tipo di dati double. Lo stesso concetto si applica anche ad altri tipi di dati. Quindi, un puntatore viene dichiarato nel modo seguente:
int *variabile puntatore;
Dopo la dichiarazione del puntatore, la variabile puntatore viene assegnata alla variabile il cui indirizzo deve essere determinato. L'istruzione di dichiarazione precedente utilizza un puntatore che memorizzerà il valore di una variabile intera.
variabile puntatore = &a;
Qui a è la variabile intera utilizzata dall'altro lato del programma il cui indirizzo è memorizzato in un puntatore a variabile. I puntatori danno anche la responsabilità di essere reinizializzati. I loro valori possono essere modificati in base alle loro necessità.
Che cos'è il riferimento?
Una variabile di riferimento è un alias per un'altra variabile. In altre parole, la variabile che fa riferimento all'altra variabile sussistente di un programma è considerata una variabile di riferimento.
Hanno una limitazione in quanto non possono essere assegnati a un valore nullo e non possono essere dichiarati, sono solo inizializzati. Dopo aver creato un riferimento, è possibile accedere alla variabile tramite il nome del riferimento o tramite il suo nome originale. I riferimenti vengono inizializzati direttamente. Esempio,
int &ref = var;
Qui ref è il nome della variabile di riferimento e punta alla variabile var, che è inizializzata in un'altra parte del programma. Quando vengono stampati i valori di ref e var, si osserva che ref e var hanno lo stesso valore. I puntatori sono vantaggiosi nel risparmiare memoria perché quando vengono passati come argomenti a una funzione, usano la posizione di memoria originale per ogni chiamata di funzione.
Le variabili di riferimento non forniscono la reinizializzazione e queste sono inizializzate una sola volta e sono univoche. I riferimenti non puntano a una variabile memorizzando il suo indirizzo in una posizione di memoria separata. In poche parole, una variabile di riferimento è un nome alternativo per una variabile esistente. Questi sono solo alias nell'altro nome della variabile a cui fare riferimento.
Principali differenze tra puntatore e riferimento
- Una variabile puntatore viene referenziata bypass per riferimento, mentre una variabile di riferimento viene referenziata bypass per valore.
- I puntatori supportano la possibilità di puntare ad altri puntatori, mentre i riferimenti mancano di questo vantaggio. Non è possibile fare in modo che una variabile di riferimento punti a più variabili.
- I puntatori supportano l'utilizzo di operatori aritmetici e agiscono come operandi, mentre le variabili di riferimento non possono essere compatibili con le operazioni aritmetiche.
- La dimensione e l'indirizzo di memoria di una variabile puntatore è nello stack, mentre una variabile di riferimento ha l'indirizzo di memoria delle variabili originali, ma occupa anche un po' di spazio nello stack.
- I puntatori hanno vantaggi di dichiarazione, mentre i riferimenti sono solo inizializzati.