281
C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más / paso de variables por referencia en C/C++
« en: 04 de Diciembre 2012, 08:26 »
PREGUNTA:
Supongamos el fragmento de código en C/C++:
void CuaCubo (int &x, int &x2, int &x3){
x2 = x*x;
x3 = x*x*x;}
……… B = 1; A = 4; CuaCubo (A, A, B);
Después de la ejecución de este fragmento:
a) A vale 16 y B vale 64
b) A vale 16 y B vale 4096
c) A vale 4 y B vale 1
d) A vale 16 y B vale 1
RESPUESTA: la opción correcta es la b). Recorramos el código. Las variables x, x2 y x3 se pasan por referencia al procedimiento ya que están precedidas del símbolo &. La llamada al procedimiento se realiza con A=4, B=1 e invocación CuaCubo (A, A, B) lo cual supone que x y x2 referencian a la misma posición de memoria. En la primera línea x2, que en nuestra invocación es A, pasa a valer x*x, que en nuestra invocación es A*A, resultando x2 = 4*4 = 16, y A=16. En la segunda línea x3 = A*A*A = 16*16*16 = 4096 y B= 4096. Conclusión: después de la ejecución del fragmento A vale 16 y B vale 4096. Esta pregunta no puede decirse que sea complicada. Lo único que hay que tener claro es el concepto de paso por valor y paso por referencia de variables y sus diferencias.
Supongamos el fragmento de código en C/C++:
void CuaCubo (int &x, int &x2, int &x3){
x2 = x*x;
x3 = x*x*x;}
……… B = 1; A = 4; CuaCubo (A, A, B);
Después de la ejecución de este fragmento:
a) A vale 16 y B vale 64
b) A vale 16 y B vale 4096
c) A vale 4 y B vale 1
d) A vale 16 y B vale 1
RESPUESTA: la opción correcta es la b). Recorramos el código. Las variables x, x2 y x3 se pasan por referencia al procedimiento ya que están precedidas del símbolo &. La llamada al procedimiento se realiza con A=4, B=1 e invocación CuaCubo (A, A, B) lo cual supone que x y x2 referencian a la misma posición de memoria. En la primera línea x2, que en nuestra invocación es A, pasa a valer x*x, que en nuestra invocación es A*A, resultando x2 = 4*4 = 16, y A=16. En la segunda línea x3 = A*A*A = 16*16*16 = 4096 y B= 4096. Conclusión: después de la ejecución del fragmento A vale 16 y B vale 4096. Esta pregunta no puede decirse que sea complicada. Lo único que hay que tener claro es el concepto de paso por valor y paso por referencia de variables y sus diferencias.