Grafico comparativo
Base per il confronto | pointer | Riferimento |
---|---|---|
Di base | Il puntatore è l'indirizzo di memoria di una variabile. | Il riferimento è un alias per una variabile. |
ritorna | La variabile pointer restituisce il valore situato all'indirizzo memorizzato nella variabile puntatore preceduto dal segno del puntatore '*'. | La variabile di riferimento restituisce l'indirizzo della variabile preceduto dal segno di riferimento '&'. |
operatori | *, -> | & |
Riferimento Nullo | La variabile pointer può riferirsi a NULL. | La variabile di riferimento non può mai riferirsi a NULL. |
Inizializzazione | È possibile creare un puntatore non inizializzato. | Un riferimento non inizializzato non può mai essere creato. |
Tempo di inizializzazione | La variabile pointer può essere inizializzata in qualsiasi momento nel programma. | La variabile di riferimento può essere inizializzata solo al momento della sua creazione. |
reinizializzazione | La variabile del puntatore può essere reinizializzata tutte le volte che è necessario. | La variabile di riferimento non può mai essere reinizializzata nuovamente nel programma. |
Definizione di puntatore
Un "puntatore" è una variabile che contiene la posizione di memoria di un'altra variabile. Gli operatori utilizzati dalla variabile pointer sono * e ->. La dichiarazione della variabile pointer contiene il tipo di dati di base seguito dal segno '*' e dal nome della variabile.
digita * var_name;
Cerchiamo di capire il puntatore con l'aiuto di un esempio.
int a = 4; int * ptr = & a; cout <Qui, abbiamo una variabile intera ae una variabile puntatore ptr che memorizza l'indirizzo della variabile a.
Puntatore aritmetico
La variabile pointer può essere gestita con due operatori aritmetici che sono "addizione" e "sottrazione". L'aggiunta indicata come "incremento" e la sottrazione viene definita come "decremento". Quando una variabile puntatore viene incrementata, punta alla posizione di memoria della variabile successiva del suo tipo di base. Quando una variabile puntatore viene decrementata, punta alla posizione di memoria della variabile precedente del suo tipo di base. Quindi, una matrice può essere facilmente accessibile da una variabile puntatore.
Indiretta multipla
Un puntatore punta all'altra variabile del puntatore che punta al valore di destinazione. Questo tipo di puntatore viene sempre inizializzato con l'indirizzo di un'altra variabile puntatore. La dichiarazione di un puntatore a un puntatore è la seguente.
tipo ** var_name;Studiamolo con un esempio.
int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout <Puntatore funzione
Come sappiamo che una funzione non è una variabile, ha ancora una locazione di memoria, che può essere assegnata a una variabile puntatore. Una volta che un puntatore punta a una funzione, la funzione può essere richiamata con quel puntatore a funzione.
I punti importanti da ricordare sul puntatore.
- La variabile pointer può essere creata senza la sua inizializzazione e può essere inizializzata in qualsiasi punto del programma.
- La variabile del puntatore può essere reinizializzata su un'altra variabile.
- La variabile pointer può riferirsi a NULL.
Definizione di riferimento
La variabile di riferimento è usata per riferirsi alla variabile che è assegnata a quella variabile di riferimento. L'operatore utilizzato dalla variabile di riferimento è '&'. La dichiarazione di una variabile di riferimento contiene il tipo di base seguito dal segno "&" e quindi dal nome della variabile.
digita & refer_var_name = var_ name;Qui, il tipo è il tipo di dati, l'operatore & conferma che si tratta di una variabile di riferimento. Il refer_var_name è il nome della variabile di riferimento. Var_name è il nome della variabile, a cui vogliamo fare riferimento la variabile di riferimento.
Cerchiamo di capire la variabile di riferimento con l'aiuto di un esempio.
int a = 4; int & b = a; // b si riferisce ad ab = 6; // ora a = 6Qui, alla variabile di tipo int viene assegnato un valore 4. Alla variabile di riferimento viene assegnata la variabile a, ovvero b è alias di a. Ora, quando assegniamo un altro valore a b, modifichiamo il valore di a. Quindi, si può dire che le modifiche apportate a una variabile di riferimento si verificheranno anche nella variabile riferita da tale variabile di riferimento.
Il punto più importante è che la variabile di riferimento deve essere inizializzata al momento della sua creazione. Una volta che la variabile di riferimento è inizializzata con una variabile, non può essere reinizializzata per riferirsi a un'altra variabile. Nel momento in cui assegni un valore a una variabile di riferimento, assegni quel valore a una variabile a cui punta una variabile di riferimento. La variabile di riferimento non può mai riferirsi a NULL. L'aritmetica non può essere eseguita su una variabile di riferimento.
La variabile di riferimento può essere utilizzata in tre modi:
- Come funzione valore di ritorno.
- Come parametro di funzione.
- Come riferimento autonomo.
Differenze chiave tra puntatore e riferimento
- Il riferimento è come creare un altro nome per riferire una variabile in modo che possa essere rinviata con nomi diversi. D'altra parte, un puntatore è semplicemente un indirizzo di memoria di una variabile.
- Una variabile puntatore se preceduta da '*' restituisce il valore di una variabile il cui indirizzo è memorizzato nel varabile del puntatore. Una variabile di riferimento preceduta da "&" restituisce l'indirizzo di quella variabile.
- Gli operatori di puntatori sono * e -> mentre l'operatore di riferimento è &.
- Una variabile puntatore se non porta l'indirizzo di una variabile punta a null. D'altra parte, una variabile di riferimento non può mai riferirsi a Null.
- È sempre possibile creare una variabile puntatore unitializzata, ma creiamo un riferimento quando abbiamo bisogno di un alias di alcune variabili per cui non è mai possibile creare una referenziazione unitializzata.
- È possibile reinizializzare un puntatore ma, una volta inizializzati, non è possibile reinizializzarlo nuovamente.
- È possibile creare un puntatore vuoto e inizializzarlo in qualsiasi momento, ma è necessario inizializzare la refrenza solo quando si crea un riferimento.
Nota:
Java non supporta i puntatori.
Conclusione
Il puntatore e il riferimento sono entrambi utilizzati per puntare o riferire un'altra variabile. Ma entrambi differiscono nel loro utilizzo e implementazione.