Riferimenti vs puntatori in C ++

Riferimenti vs puntatori in C ++

In C ++, ci sono due modi per accedere o gestire le posizioni di memoria. Il primo è usando Riferimenti e il secondo usando puntatori. Entrambi Riferimenti E puntatori Consentirci di evitare i dati duplicanti, prevenire un'allocazione di memoria inutili o deallocation e ottenere prestazioni migliori. Ma il modo in cui lo fanno è diverso. Entrambi riferimento E Pointer sono caratteristiche essenziali che sono ampiamente utilizzate per accedere e manipolare i dati. Tuttavia, contrariamente alle loro apparenti somiglianze, ognuno ha attributi distintivi che li rendono preferibili in circostanze diverse.

Questo articolo presenta un confronto tra Riferimenti E puntatori in c++.

Riferimento in c++

UN riferimento In C ++ è un alias o un nome alternativo di una variabile esistente. Una volta stabilito, il riferimento è trattato come se fosse la stessa variabile e qualsiasi modifica apportata al riferimento colpisce anche la variabile corrispondente. Riferimenti non può puntare a null e il loro valore non può essere modificato dopo l'inizializzazione.

#includere
Utilizzo dello spazio dei nomi std;
int main ()
int i = 7;
int & r = i;
cout << "Value of i : " << i << endl;
cout << "Value of i reference : " << r << endl;
restituzione 0;


Nel codice sopra, stiamo inizializzando un numero intero I con il valore 7 e il suo numero intero riferimento viene creato e stampato utilizzando l'istruzione Cout.

Produzione

Puntatori in c++

Puntatori, D'altra parte, sono variabili che archiviano l'indirizzo di memoria di un'altra variabile. Consentono l'accesso indiretto alla posizione della memoria e forniscono la capacità di allocare e trattare dinamicamente la memoria. A differenza di Riferimenti, puntatori può essere nullo e può indicare luoghi diversi in base al loro valore.

#includere
Utilizzo dello spazio dei nomi std;
int main ()
int var = 5;
int *ip;
IP = &var;
cout << "Value of var variable: ";
cout << var << endl;
cout << "Address stored in ip variable: ";
cout << ip << endl;
cout << "Value of *ip variable: ";
cout << *ip << endl;
restituzione 0;


Nel codice sopra, stiamo inizializzando un VAR int con valore 5 e a Pointer viene creato e puntato al var variabile. Il valore, l'indirizzo e il valore del Pointer vengono quindi stampati sullo schermo.

Produzione

Riferimenti vs. Puntatori in c++

Le seguenti sono le differenze tra Riferimenti E puntatori in c++.

1: sintassi

Riferimenti Fornire sintassi più pulita, eliminando la necessità di un operatore di dereferencing (come * o ->). Inoltre, poiché sono garantiti per non essere nulli, riducono il rischio di guasti di segmentazione, un errore comune che si verifica quando si tenta di accedere a una posizione di memoria non valida attraverso un null Pointer.

2: versatilità

Puntatori sono più versatili e flessibili di Riferimenti. Sono ampiamente usati in E.G., Allocazione di memoria dinamica o attività di manipolazione della memoria, come Pointer aritmetica. Puntatori sono anche necessari quando si creano strutture di dati complesse come elenchi collegati, alberi o grafici, in cui un nodo deve indicare un altro nodo.

3: flessibilità

A differenza di Riferimenti, puntatori può essere riassegnato per indicare un oggetto diverso o addirittura essere impostato su NULL. Questa flessibilità consente l'assegnazione dinamica della memoria, che è spesso necessaria in programmi complessi. Puntatori può anche essere utilizzato per tracciare l'utilizzo della memoria, implementare le strutture di dati e passare i valori di riferimento, tra le altre cose.

4: funzioni

Un'altra differenza cruciale è il modo in cui Riferimenti E puntatori sono passati alle funzioni. Passando per riferimento Abilita la funzione di modificare direttamente la variabile originale senza creare una nuova copia della variabile. Al contrario, passando da a Pointer crea una nuova copia del Pointer, non la variabile originale, aumentando potenzialmente l'utilizzo della memoria del programma. D'altra parte, passando Pointer fornisce la capacità di modificare il Pointer, che è impossibile quando si passa riferimento.

5: sicurezza

Riferimenti sono spesso visti come l'opzione più sicura a causa dei loro limiti. Non consentono perdite di memoria o puntatori pendenti, che possono essere problemi comuni quando si utilizzano puntatori. Tuttavia, in alcuni casi, sono necessari i puntatori, in quanto consentono una maggiore flessibilità.

Conclusione

Entrambi Riferimenti E puntatori hanno caratteristiche uniche che le rendono preferibili in determinate circostanze. Riferimenti sono utili per semplici manipolazioni di dati e offrono sintassi più puliti, mentre puntatori sono più versatili e necessari per l'allocazione dinamica della memoria, la manipolazione della memoria e la creazione complessa della struttura dei dati. Comprendere l'uso e i limiti adeguati di ciascuna forma è essenziale per sviluppare un codice robusto ed efficiente.