Differenza tra puntatore e riferimento | Pointer vs Reference

Anonim

Differenza chiave - puntatore vs riferimento

Prima di discutere la differenza tra puntatore e riferimento, vediamo innanzitutto brevemente il significato di questi due termini. In un programma, i dati occupano la memoria. La posizione esatta della memoria in cui i dati sono stati inseriti in un momento di esecuzione dovrebbero essere conosciuti per accedervi. Le variabili puntatore e variabili di riferimento vengono utilizzate per accedere a questi dati e per gestire gli indirizzi di memoria in cui si trovano. Cioè, entrambi puntatori e riferimenti possono essere utilizzati per indirizzare indirettamente gli oggetti. Essi sostengono in sostanza gli indirizzi di memoria come i loro valori. La differenza tra un puntatore e un riferimento è che un puntatore è una variabile che memorizza l'indirizzo della posizione di memoria di un'altra variabile mentre un riferimento è una variabile che si riferisce ad un'altra variabile. I due meccanismi, il puntatore e il riferimento, hanno diverse sintassi e utilizzo .

Che cosa è un puntatore?

Un puntatore è

un oggetto di linguaggio di programmazione che memorizza l'indirizzo di memoria di un valore nella memoria di calcolo. nella sintassi C ++;

int i = 5;

int * ptr = & i;

La prima riga definisce una variabile inizializzata con un valore di 5. La seconda riga definisce un puntatore all'indirizzo di memoria della variabile. Qui, il 'ptr' viene dichiarato come un oggetto di tipo 'puntatore a int' il cui valore iniziale è l'indirizzo dell'oggetto i. Essenzialmente la variabile ptr punti a i memorizzando il suo indirizzo di memoria.

Ottenere il valore memorizzato in una posizione di memoria si chiama dereferencing . L'operatore * viene utilizzato per distruggere il puntatore. Dopo le dichiarazioni, l'espressione indiretta * ptr dereferences ptr si riferisce a i. Per modificare il valore di i, è possibile utilizzare l'assegnazione;

* ptr = 20;

I puntatori possono essere riassegnati per fare riferimento a diversi oggetti.

A puntatore null è un tipo speciale di puntatore. Un puntatore nullo è spesso indicato con 0 o null e non fa nulla. È buona pratica usare un puntatore null nel caso in cui non sia assegnato un indirizzo esatto al puntatore. Questa assegnazione può essere utilizzata in operazioni logiche e condizioni. I puntatori possono essere

usati per memorizzare e gestire gli indirizzi della memoria allocata dinamicamente . L'implementazione e il controllo delle strutture di dati, quali stack, code e liste, possono essere rese efficienti con l'uso di puntatori. Ad esempio, una coda può avere due puntatori; puntatore di testa e puntatore di coda.I puntatori possono anche essere usati per passare le variabili per il loro indirizzo, che consentirebbe di modificare il valore. La manipolazione diretta di dispositivi di memoria o dispositivi mappati con memoria può anche essere gestita utilizzando puntatori. I puntatori consentono l'accesso a memoria protetta e non protetta alla memoria. Pertanto, è necessario adottare le precauzioni necessarie per verificare che il contenuto di un puntatore sia valido. Altrimenti, il dereferencing di un puntatore con un indirizzo di memoria non valido potrebbe causare il blocco del programma.

I puntatori sono supportati in lingue come C, C ++, Pascal e molte lingue assembly.

Pointer

a che indica l'indirizzo di memoria associato alla variabile b. Che cosa è un riferimento?

Un riferimento è semplicemente un

identificatore alternativo per un valore memorizzato nella memoria . Consente a un programma di accedere indirettamente ad un particolare dato. nella sintassi C ++;

int i = 5;

int & ref =

i; La prima riga definisce una variabile inizializzata con un valore di 5. La seconda riga dichiara 'ref' come oggetto di tipo 'riferimento a int' che si riferisce a i. Un riferimento è diverso da quello stesso dato che un riferimento è implementato come indirizzo fisico del particolare dato memorizzato in memoria.

Una volta definito, non è possibile assegnare un nuovo valore a un nuovo valore. Un riferimento si riferisce sempre all'oggetto con il quale è inizializzato. Nella seguente assegnazione, ref riferisce ancora a i, ma il valore è ora 20.

ref = 20;

Secondo l'esempio di cui sopra, i riferimenti di dereferencing non richiedono alcun operatore.

I riferimenti possono essere usati quando una variabile si riferisce sempre ad un oggetto. Questo perché, a differenza dei puntatori, i riferimenti non possono essere nulli e devono essere sempre assegnati all'inizializzazione. Poiché i riferimenti devono sempre riferirsi a qualche oggetto, rendendo una tale variabile un riferimento assicura che il programma funzioni in modo efficiente e corretto. Dato che non esistono riferimenti nulli, non è necessario verificare la validità di una variabile di riferimento.

Le variabili di riferimento possono essere

utilizzate per passare in modo efficiente dati di grandi dimensioni come argomenti alle procedure . I riferimenti vengono utilizzati anche nella condivisione di dati di grandi dimensioni tra diverse aree di codice, in quanto ogni codice conserva un riferimento ai dati. I linguaggi di programmazione come C ++, Java, Python, Perl, PHP, Ruby ecc. Supportano i riferimenti.

Qual è la differenza tra Pointer e Reference?

Definizione puntatore e riferimento

puntatore:

Un puntatore è l'indirizzo di memoria di un oggetto memorizzato nella memoria di calcolo. Riferimento:

Un riferimento è un identificatore alternativo o un alias per un oggetto. Caratteristiche di puntatore e riferimento

Dichiarazione

Puntatore:

Un puntatore viene dichiarato con l'operatore *. Riferimento:

Viene dichiarato un riferimento con & operator. Dereferencing

Pointer:

Una variabile di puntatore richiede che l'operatore * venga dereferenziato. Riferimento:

Una variabile di riferimento non richiede alcuna operazione da dereferenziare. Inizializzazione

Puntatore:

I puntatori possono essere inizializzati a null.Tali variabili sono chiamate puntatori nullo. Riferimento:

I riferimenti non possono essere inizializzati a null. Non esiste un riferimento nullo. Un riferimento deve sempre riferirsi a un oggetto. Riassegnazioni

Pointer:

Una variabile di puntatore può essere riassegnata per fare riferimento a diversi oggetti. Riferimento:

Una variabile di riferimento non può essere riassegnata. Si riferisce sempre all'oggetto con il quale è stato inizializzato. Usage

Pointer:

Le variabili del puntatore devono essere utilizzate quando esiste la possibilità di fare riferimento a nulla o quando è necessario fare riferimento a cose diverse in tempi diversi. Riferimento:

Le variabili di riferimento devono essere utilizzate quando ci sarà sempre un oggetto da fare riferimento e quando non è necessario utilizzare tale variabile di riferimento per fare riferimento a qualsiasi altra cosa diversa da quella. Applicazione dell'utilizzo

Puntatore:

Le variabili puntatore possono essere utilizzate per implementare algoritmi e strutture di dati. Riferimento:

Le variabili di riferimento possono essere utilizzate nei parametri di funzione ei tipi di ritorno definiscono interfacce utili. Lingue utilizzate:

Pointer:

Lingue di programmazione quali C, C ++, Pascal e molti linguaggi di montaggio supportano i puntatori. Riferimento:

I linguaggi di programmazione come C ++, Java, Python, Perl, PHP, Ruby ecc. Supportano i riferimenti. Immagine gentile: "Puntatori" da Questo file è stato eseguito da User: SvenTranslation. Proprio lavoro. Questa immagine vettoriale è stata creata con Inkscape. (CC BY-SA 3. 0) via Commons -