Foros del Web » Programación para mayores de 30 ;) » C/C++ »

punteros

Estas en el tema de punteros en el foro de C/C++ en Foros del Web. Hola, he encontrado este interesante ejercicio de punteros a funciones, consiste en pasar el parámetro vpi por referencia, para que cambie el contenido de pi ...
  #1 (permalink)  
Antiguo 28/07/2010, 12:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
punteros

Hola, he encontrado este interesante ejercicio de punteros a funciones, consiste en pasar el parámetro vpi por referencia, para que cambie el contenido de pi dentro de la función.


Código C:
Ver original
  1. #include <stdlib.h>
  2.  
  3. int main()
  4. {
  5.   float pi=3.14;
  6.   void cambia_valor();
  7.   cambia_valor(&pi);
  8.  
  9.   printf("Direccion de pi: %u\n",(unsigned int) &pi);
  10.   printf("Valor de pi: %f\n",pi);
  11.   return 0;
  12.   getchar();
  13.   getchar();
  14. }
  15. void cambia_valor(float *vpi){
  16.     *vpi=0;
  17.     printf("Direccion de vpi: %u\n",(unsigned int) vpi);
  18.     printf("Valor de vpi: %f\n", *vpi);
  19. }

Cuando lo compilo me aparece esto: C:\Users\asus\Desktop\Makefile.win [Build Error] [Objects/MingW/pasar el parámetro vpi por referencia.o] Error 1
  #2 (permalink)  
Antiguo 28/07/2010, 13:26
 
Fecha de Ingreso: mayo-2008
Ubicación: Chile
Mensajes: 189
Antigüedad: 16 años
Puntos: 3
Respuesta: punteros

linea 6: eso deberia estar fuera de main (antes) y deberia decir :
void cambia_valor(float *vpi);
__________________
si tienes entre 18 y 20 años... entonces tienes 19 años xD
  #3 (permalink)  
Antiguo 29/07/2010, 03:26
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: punteros

Al ejecutar este programa me sale esto:

Dirección de vpi: 2686756
Valor de vpi: 0.000000
Dirección de pi: 2686756
Valor de pi: 0.000000

¿Por qué la dirección de pi es la misma que la de vpi?
¿Por qué pi vale 0 en lugar de 3.14?. Gracias.
  #4 (permalink)  
Antiguo 29/07/2010, 08:07
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: punteros

La direccion es la misma porque a la funcion cambio_valor le pasaste la direccion de la variable pi. Por lo tanto al imprimir los valores ta da exactamente lo mismo. Esa es la idea de pasar la direccion de memoria y no el valor.

La variable es 0 justamente porque cambio de valor la modifica a 0 en la linea 16.

Etiquetas: punteros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:22.