logo

Funcions C++ - Pass By Reference

Existeixen diverses maneres d'enviar dades (o variables) com a argument a una funció. Dos dels comuns són Passing by Value i Passing by Reference. Passar per referència permet que una funció modifiqui una variable sense crear-ne una còpia. Hem de declarar variables de referència. La ubicació de memòria de la variable i el paràmetre passat és la mateixa. Per tant, qualsevol canvi al paràmetre també es reflecteix en la variable dins de la seva funció principal. Aquest article se centra a discutir com passar variables per referència en C++.

Què és una passada per referència?

Quan una variable es passa com a referència a una funció, l'adreça de la variable s'emmagatzema en una variable punter dins de la funció. Per tant, la variable dins de la funció és un àlies per a la variable passada. Per tant, qualsevol operació realitzada sobre la variable dins de la funció també es reflectirà a la funció de crida.



  • Aquesta capacitat de reflectir els canvis podria retornar més d'un valor per una funció.
  • A més, una funció void podria tornar tècnicament valor/s mitjançant aquest mètode.

El & L'operador (adreça de) denota valors passats per referència en una funció. A continuació es mostra el programa C++ per implementar la referència de pas per referència:

C++

java integer








// C++ program to implement> // pass-by-reference> #include> using> namespace> std;> > void> f(>int> & x)> {> >x--;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(a);> >cout << a << endl;> }>

>

>

Sortida

ciutats a Austràlia
5 4>

Explicació:

  • En primer lloc, es defineix una funció amb el tipus de dades de retorn void i pren valor per referència (tal com indica el & signe d'adreça en els paràmetres formals).
  • La funció disminueix el valor del seu paràmetre formal en 1.
  • Després, dins de la funció principal, s'anomena una variable entera a s'inicialitza amb el valor 5.
  • El valor de 'a' està imprès a la consola. Es crida la funció f() i la variable es passa com a argument.
  • Dins de la funció, el valor de la variable es disminueix en 1.
  • En tornar de la funció, es torna a mostrar el valor de la variable, que va resultar ser 1 menys que el valor original.

Per tant, els canvis a una variable passats per referència a una funció es reflecteixen a la funció de crida.

Funció d'intercanvi mitjançant Pass-By-Reference

La funció d'intercanvi intercanvia els valors de les dues variables que rep com a arguments. A continuació es mostra el programa C++ per intercanviar els valors de dues variables mitjançant la referència.

C++




// C++ program to swap the values> // of two variables using> // pass-by-reference> #include> > // Prototype of the function> void> swap(>int> &,>int> &);> > // Driver code> int> main()> {> >int> x, y;> > >// Inputting two variables> >printf>(>'Enter the value of x and y '>);> >scanf>(>'%d%d'>, &x, &y);> > >// Displaying their values before swapping> >printf>(>'Before Swapping x = %d y = %d '>,> >x, y);> > >// Calling the function & sending variable> >// values as argument> >swap(x, y);> > >// Displaying their values after swapping> >printf>(>'After Swapping x = %d y = %d '>,> >x, y);> >return> 0;> }> > // Function uses pass by reference method> // to swap passed variable values> void> swap(>int> &a,>int> &b)> {> >int> temp;> > >temp = b;> >b = a;> >a = temp;> }>

codis d'error de Linux
>

>

Sortida:

C++: funció d'intercanvi mitjançant Pass-By-Reference

Explicació:

  • En primer lloc, es defineix el prototip de funció (opcional si la funció es defineix abans de la funció principal).
  • Dins de la funció principal, els valors de les dues variables es prenen com a entrada de l'usuari.
  • Els valors abans de cridar la funció d'intercanvi s'imprimeixen a la consola.
  • Després d'això, els valors es passen com a argument a la funció d'intercanvi.
  • La funció d'intercanvi utilitza trucada per referència i conté el codi per intercanviar les dues variables.
  • Un cop finalitzada la funció, el valor de les dues variables es mostra a la funció principal (després de la crida a l'intercanvi).
  • Els valors intercanviats es mostren a la pantalla.

Passeu per referència amb punters

També és possible passar l'adreça variable de la funció trucada i utilitzar-la com a punter dins de la funció cridada. Això permet una mica més explícitament en el canvi de valors variables a la funció.

A continuació es mostra el programa C++ per implementar la referència de pas per referència amb punters:

js cadena multilínia

C++




// C++ program to implement> // pass-by-reference with> // pointers> #include> using> namespace> std;> > void> f(>int> *x)> {> >*x = *x - 1;> }> > // Driver code> int> main()> {> >int> a = 5;> >cout << a << endl;> >f(&a);> >cout << a << endl;> }>

>

>

Sortida

5 4>

Explicació:

  • En primer lloc, es defineix una funció amb el tipus de dades de retorn void i pren valor com a punters (tal com s'indica amb * asterisc signar els paràmetres formals).
  • La funció disminueix el valor del seu paràmetre formal en 1.
  • Després d'això, dins de la funció principal, s'inicialitza una variable entera anomenada 'a' amb el valor 5.
  • Aleshores es mostra aquest valor. Es crida a la funció i es passa l'adreça de la variable com a argument.
  • Dins de la funció, el valor de la variable punter es disminueix en 1.
  • En tornar de la funció, es torna a mostrar el valor de la variable, que va resultar ser 1 menys que el valor original.