references c
Impara a conoscere i modi per dichiarare e utilizzare i riferimenti in C ++.
Il riferimento è un concetto importante nel linguaggio di programmazione C ++. Sebbene non sia forte come i puntatori, tuttavia ci permette di usarlo per scrivere programmi efficienti. L'uso principale della variabile di riferimento consiste nel passare i parametri alle funzioni.
La famosa tecnica di passaggio dei parametri 'passa per riferimento' fa uso di riferimenti. In questo tutorial, vedremo cos'è un riferimento e come dichiararlo e usarlo. Discuteremo anche le differenze tra puntatori e riferimenti, nonché il passaggio e la restituzione di un riferimento a / da funzioni.
=> Vedi qui per esplorare l'elenco completo dei tutorial C ++.
Cosa imparerai:
- Cos'è un riferimento?
- Dichiarazione delle variabili di riferimento
- Riferimento vs puntatori
- Passaggio di riferimenti alle funzioni
- Restituzione di riferimenti
- Conclusione
- Lettura consigliata
Cos'è un riferimento?
Il riferimento è un alias o un altro nome per una variabile. Data una variabile con un identificatore, possiamo fornire un altro identificatore a questa variabile in modo da poter fare riferimento a questa variabile con il suo nome originale o con un altro nome. Questo 'un altro nome' è quello che viene chiamato riferimento.
Considera di avere una variabile 'i' con valore 17. Se j è un riferimento, la rappresentazione in memoria della variabile ie del riferimento j è mostrata di seguito.
Come mostrato nella figura sopra, una variabile e il suo alias, ovvero il punto di riferimento allo stesso valore.
Dichiarazione delle variabili di riferimento
Un riferimento può essere dichiarato utilizzando l'operatore '&'.
Di seguito è riportata la dichiarazione di riferimento.
int a = 10; int& refvar = a;
Quindi nel codice sopra, abbiamo dichiarato una variabile intera con valore 10. Quindi dichiariamo un'altra variabile refvar e assegniamo una variabile ad essa. Notare che durante la dichiarazione di refvar, abbiamo usato l'operatore & appena prima del nome della variabile. Ciò indica che refvar è un riferimento a una variabile già esistente.
Possiamo fare riferimento alla variabile 'a' utilizzando il nome della variabile a o utilizzando il nome di riferimento 'refvar'.
qual è la mia chiave di sicurezza wifi
Di seguito è riportato un semplice esempio di riferimenti:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Produzione:
Età: 22
NumYears: 22
Stipendio: 10000
Salario: 10000
Nel codice sopra, abbiamo un'età variabile intera. Successivamente, dichiariamo una variabile intera di riferimento numYears alla variabile età. Abbiamo un altro stipendio variabile di tipo doppio. Successivamente, dichiariamo un salario variabile di riferimento doppio rispetto al salario variabile.
Successivamente, stampiamo le variabili, prima l'età, quindi il suo riferimento è seguito dallo stipendio e dal suo riferimento. Se controlliamo l'output del programma, comprendiamo quella variabile e il riferimento ad essa punta allo stesso valore e quindi Age e numYears, così come stipendio e salario, hanno gli stessi valori.
Riferimento vs puntatori
Rispetto ai puntatori, i riferimenti sono più sicuri e facili da usare.
Discuteremo alcune differenze tra puntatori e riferimenti:
- A differenza dei puntatori, i riferimenti non possono avere un valore nullo. È obbligatorio che ai riferimenti sia assegnato un valore.
- I riferimenti vengono inizializzati nel momento in cui vengono creati. A differenza di ciò, i puntatori possono essere inizializzati in qualsiasi momento e non necessariamente durante la dichiarazione.
- I puntatori possono essere riassegnati ai valori a proprio agio. Ma con i riferimenti, non possiamo farlo. Una volta assegnato un valore della variabile, ovvero una volta creato un alias di una variabile, non possiamo assegnare un'altra variabile a questo riferimento.
- Non abbiamo riferimenti nulli. Per definizione, un riferimento è un alias per la variabile e viene inizializzato durante la creazione stessa. Pertanto, non è possibile che avremo un riferimento void e in seguito assegneremo una variabile con un tipo di dati concreto. Al contrario, possiamo avere puntatori vuoti.
A causa di queste limitazioni discusse in precedenza, i riferimenti in C ++ non possono essere utilizzati con strutture di dati come un elenco collegato. Tieni presente che in Java non abbiamo tutte queste restrizioni o limitazioni sui riferimenti.
Passaggio di riferimenti alle funzioni
Nei nostri tutorial precedenti sulle funzioni, abbiamo già discusso la tecnica del parametro 'passa per riferimento' e abbiamo visto l'esempio di scambio di due numeri utilizzando questa tecnica. Saltiamo la spiegazione di questa tecnica in questa sezione e presentiamo ancora una volta una funzione di scambio come esempio.
Ma questa volta invece di scambiare i numeri, cambieremo due stringhe.
#include #include using namespace std; void swap(char * &str1, char * &str2) { char *temp = str1; str1 = str2; str2 = temp; } int main() { char *str1 = 'references'; char *str2 = 'pointers'; cout<<'str1 = '< Produzione:
str1 = riferimenti str2 = puntatori
Dopo lo scambio ...
str1 = puntatori str2 = riferimenti
Quindi in questo programma, passiamo le stringhe (char *) alla funzione di scambio. I parametri formali sono due riferimenti a una variabile di tipo char *. Notiamo che quando due valori vengono scambiati, la loro modifica si riflette nella funzione chiamante poiché stiamo usando riferimenti / alias per i parametri.
Restituzione di riferimenti
Proprio come la restituzione di puntatori da funzioni, possiamo anche restituire riferimenti da funzioni. La restituzione di riferimenti da una funzione restituisce anche un puntatore implicito al valore restituito. Per questo motivo, una funzione che restituisce un riferimento può essere utilizzata sul lato sinistro dell'assegnazione.
Facciamo un esempio di restituzione di un riferimento da una funzione.
#include using namespace std; int myarray[] = {1, 0, 2, 3, 5}; int& setValues( int i ) //returns reference to the array { return myarray[i]; } int main () { cout << 'myarray before change' << endl; for ( int i = 0; i < 5; i++ ) { cout << 'myarray[' << i << '] = '; cout << myarray[i] << endl; } setValues(1) = 1; setValues(3) = 8; cout << 'Value after change' << endl; for (int i = 0; i < 5; i++ ) { cout<< 'myarray[' << i << '] = '; cout << myarray[i] << endl; } return 0; }
Produzione:
myarray prima del cambiamento
myarray [0] = 1
myarray [1] = 0
myarray [2] = 2
myarray [3] = 3
myarray [4] = 5
Valore dopo il cambiamento
myarray [0] = 1
myarray [1] = 1
myarray [2] = 2
myarray [3] = 8
myarray [4] = 5
Lo screenshot per lo stesso è mostrato di seguito:
Come visto nel codice precedente, definiamo una funzione setValues che restituisce un riferimento e un parametro che è un numero intero. All'interno della funzione, restituiamo semplicemente il riferimento all'array alla posizione I in C ++.
Nella funzione main stampiamo i valori dell'array. Quindi, utilizzando la funzione setValues, modifichiamo i valori di due elementi nell'array. Di nuovo stampiamo il valore dell'array.
Una cosa che dobbiamo notare con i riferimenti è che possiamo fare in modo che una funzione restituisca un riferimento solo quando i dati sono statici o globali. Non è consentito restituire un riferimento a una variabile locale in C ++.
Conclusione
I lettori dovrebbero notare che l'uso principale dei riferimenti è per passare i parametri alle funzioni.
Nei prossimi tutorial, tratteremo le funzioni / espressioni lambda in C ++ prima di passare alla programmazione orientata agli oggetti in C ++.
bilanciamento del carico router due connessioni Internet
=> Dai un'occhiata ai migliori tutorial di formazione C ++ qui.
Lettura consigliata
- Miglior serie di tutorial GRATUITI per C #: la guida definitiva a C # per principianti
- Puntatori e operazioni con i puntatori in C ++
- Test di carico con HP LoadRunner Tutorial
- Variabili in C ++
- Programmazione orientata agli oggetti in C ++
- Tutorial su Unix Pipes: Pipes nella programmazione Unix
- Funzioni di libreria in C ++
- 70+ MIGLIORI tutorial C ++ per imparare la programmazione C ++ GRATUITAMENTE