C/Visual C - Llamada por referencia.

 
Vista:

Llamada por referencia.

Publicado por Melissa (4 intervenciones) el 13/07/2009 18:13:57
Hola que tal, estaba analizando un programa que tenía como ejemplo, el cuál, eleva al cúbo a la variable number, mediante una llamada por valor. Ahora bien, si mal no leí, las llamadas que se realizan por valor, no modifican el valor de la variable, ¿correcto?. Entonces, ¿Por qué al ejecutar el programa y al realizarse la elevación al cubo de number, number tiene como nuevo valor 125?, ¿No se supone que no se debería poder modificar number?... No entiendo!!, osea tendría que seguir valiendo 5, si es una llamada por valor...
¿Como me doy cuenta de que number no se modificó?, yo probé realizando una suma (number+number) y creí que me iría a dar 10... pero no, me dió 250, es decir el valor de number quedó modificado.

Si alguien me explica, se lo agradecería de corazón. Muchas gracias desde ya !!!

MeLi.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Llamada por referencia.

Publicado por Melissa (4 intervenciones) el 13/07/2009 18:19:46
Perdón !!, olvide dejarles el programa. Pido mil disculpas.

int cubebyvalue(int);

main()
{
int number =5;

printf("el valor original de number es %d ",number);
number=cubebyvalue(number);
printf("el valor nuevo de number es %d ",number);
system("pause");
return 0;
}

int cubebyvalue(int n)
{
return n * n * n;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Llamada por referencia.

Publicado por eduardo (82 intervenciones) el 13/07/2009 19:42:30
Lo que sucede es number en ningún momento es modificado dentro de la funcion, lo que pasa es que le asignas el valor que retorna la función y como la función te retorna 125 esr valor se le asigna pero no porque se haya modifcado dentro de la función como te repito.
Prueba esto y compruéabalo:

int cubebyvalue(int);

main()
{
int number =5, power;

printf( " el valor original de number es %d ", number );
power = cubebyvalue(number);
printf( " el valor nuevo de number es %d ",number);
system("pause");
return 0;
}

int cubebyvalue( int n )
{
return n * n * n;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar