Funcions C++ - Pass By Reference

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++




// 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

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;> }>

Sortida:

C++: funció d

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:

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.