references c
Conegueu les maneres de declarar i utilitzar referències en C ++.
La referència és un concepte important en el llenguatge de programació C ++. Tot i que no és tan fort com els indicadors, ens permet utilitzar-lo per escriure programes eficients. El principal ús de la variable de referència és passar paràmetres a funcions.
La popular tècnica de pas de paràmetres 'passa per referència' fa ús de referències. En aquest tutorial, veurem què és una referència i com declarar-la i utilitzar-la. També discutirem les diferències entre els punters i les referències, així com passar i retornar una referència a / des de funcions.
=> Vegeu aquí per explorar la llista completa de tutorials de C ++.
Què aprendreu:
- Què és una referència?
- Declaració de variables de referència
- Referència Vs Punters
- Passar referències a funcions
- Retorn de referències
- Conclusió
- Lectura recomanada
Què és una referència?
La referència és un àlies o un altre nom per a una variable. Donada una variable amb un identificador, podem proporcionar-li un altre identificador perquè puguem fer referència a aquesta variable ja sigui amb el seu nom original o amb un altre nom. Aquest ‘altre nom’ és el que s’anomena Referència.
Penseu que tenim una variable ‘i’ amb el valor 17. Si j és una referència, la representació de memòria de la variable i i la referència j es mostra a continuació.
Com es mostra a la figura anterior, una variable i el seu àlies és a dir, punt de referència al mateix valor.
Declaració de variables de referència
Es pot declarar una referència mitjançant l’operador ‘&’.
La declaració de referència es mostra a continuació.
int a = 10; int& refvar = a;
Així doncs, al codi anterior, hem declarat una variable sencera amb el valor 10. A continuació, declarem una altra variable refvar i li assignem una variable. Tingueu en compte que, mentre declarem refvar, hem utilitzat & operator just abans del nom de la variable. Això indica que refvar és una referència a una variable ja existent.
Podem referir-nos a la variable ‘a’ mitjançant el nom de la variable a o bé amb el nom de referència ‘refvar’.
per què és c ++ millor que Java
A continuació es mostra un simple exemple de referències:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Sortida:
Edat: 22 anys
Núm. Anys: 22
Salari: 10000
Salaris: 10000
Al codi anterior, tenim una variable d’edat sencera. A continuació, declarem una variable sencera de referència numYears a la variable d'edat. Tenim un altre salari variable de tipus doble. A continuació, declarem una referència de salari variable doble al salari variable.
A continuació, imprimim les variables; a la primera edat, després la seva referència va seguida del salari i la seva referència. Si comprovem la producció del programa, entenem que la variable i la referència a aquest apunten al mateix valor i, per tant, l’edat i el nombre d’anys, així com el salari i els salaris, tenen els mateixos valors.
Referència Vs Punters
En comparació amb els indicadors, les referències són més segures i fàcils d’utilitzar.
Discutirem algunes diferències entre els indicadors i les referències:
- A diferència dels indicadors, les referències no poden tenir un valor nul. És obligatori que les referències tinguin assignat un valor.
- Les referències s’inicialitzen en el moment que es creen. A diferència d'això, els indicadors es poden inicialitzar en qualsevol moment i no necessàriament durant la declaració.
- Els indicadors es poden reassignar als valors a gust. Però amb referències, no ho podem fer. Un cop s’assigna un valor de la variable, és a dir, un cop es crea un àlies d’una variable, no podem assignar una altra variable a aquesta referència.
- No tenim referències buides. Per definició, una referència és un àlies de la variable i s’inicialitza durant la creació. Per tant, no hi ha cap possibilitat que tinguem referència nul·la i més endavant li assignem una variable amb un tipus de dades concret. En canvi, podem tenir indicadors buits.
A causa d’aquestes limitacions comentades anteriorment, les referències a C ++ no es poden utilitzar amb estructures de dades com una llista enllaçada. Tingueu en compte que a Java no tenim totes aquestes restriccions ni limitacions de referències.
Passar referències a funcions
En els nostres tutorials anteriors sobre funcions, ja hem parlat de la tècnica del paràmetre 'passa per referència' i hem vist l'intercanvi de dos nombres amb l'exemple d'aquesta tècnica. Ometem l'explicació d'aquesta tècnica en aquesta secció i només presentem una funció d'intercanvi una vegada més com a exemple.
Però aquesta vegada en lloc d’intercanviar números, canviarem dues cadenes.
#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 = '< Sortida:
str1 = referències str2 = indicadors
Després de l'intercanvi….
str1 = indicadors str2 = referències
Així doncs, en aquest programa, passem cadenes (char *) a la funció d’intercanvi. Els paràmetres formals són dues referències a una variable de tipus char *. Observem que quan s’intercanvien dos valors, la seva modificació es reflecteix a la funció de trucada ja que estem utilitzant referències / àlies per a paràmetres.
Retorn de referències
Igual que tornar punteres de funcions, també podem retornar referències de funcions. La devolució de referències d'una funció també retorna un punter implícit al valor de retorn. Per aquest motiu, es pot utilitzar una funció que retorna una referència al costat esquerre de la tasca.
Posem un exemple de retorn d'una referència d'una funció.
#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; }
Sortida:
myarray abans del canvi
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Valor després del canvi
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
A continuació es mostra la captura de pantalla del mateix:

Com es veu al codi anterior, definim una funció setValues que retorna una referència i un paràmetre que és un enter. Dins de la funció, només retornem la referència de la matriu a la posició I en C ++.
A la funció principal, imprimim els valors de la matriu. A continuació, mitjançant la funció setValues, canviem els valors de dos elements de la matriu. De nou imprimim el valor de la matriu.
Una cosa que hem de tenir en compte amb les referències és que podem tenir una funció que retorni una referència només quan les dades siguin estàtiques o globals. És il·legal retornar una referència a una variable local en C ++.
com obriu un fitxer de dades al Windows
Conclusió
Els lectors han de tenir en compte que l’ús principal de les referències és passar els paràmetres a les funcions.
En els propers tutorials, tractarem les funcions / expressions lambda en C ++ abans de passar a la programació orientada a objectes en C ++.
=> Consulteu aquí els millors tutorials de formació en C ++.
Lectura recomanada
- Millor sèrie de tutorials C # GRATU :TS: la millor guia C # per a principiants
- Punters i operacions de punter en C ++
- Prova de càrrega amb tutorials HP LoadRunner
- Variables en C ++
- Programació orientada a objectes en C ++
- Tutorial Unix Pipes: Pipes a la programació Unix
- Funcions de biblioteca a C ++
- 70+ BEST Tutorials C ++ per aprendre programació C ++ GRATIS