Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/07/2010, 06:20
minette1988
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
paso de estructuras a funciones

He encontrado el siguiente ejemplo que pasa una estructura entera a una función, dicha función se llama suma que calcula cuál será la edad dentro de 20 años:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. struct estructura_amigo {
  4.     char nombre[30];
  5.     char apellido[40];
  6.     char telefono[10];
  7.     int edad;
  8.     };
  9.  
  10. struct estructura_amigo amigo = {
  11.     "Juanjo",
  12.     "López",
  13.     "983403367",
  14.     30
  15.     };
  16.  
  17. int suma( struct estructura_amigo );
  18.  
  19. main()
  20. {
  21.     printf( "%s tiene ", amigo.apellido );
  22.     printf( "%i años ", amigo.edad );
  23.     printf( "y dentro de 20 años tendrá %i.\n", suma(amigo) );
  24. }
  25.  
  26. int suma( struct estructura_amigo arg_amigo )
  27. {
  28.     return arg_amigo.edad + 20;
  29. }

Yo lo he modificado con el fin de poder introducir los datos de teclado, pero cuando lo ejecuto me dice que el programa dejó de funcionar. ¿Dónde está el fallo?
Esta es la modificación:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. struct estructura_amigo {
  4.     char nombre[30];
  5.     int edad;
  6.     };
  7.  
  8. struct estructura_amigo amigo[3];
  9. struct estructura_amigo *arg_amigo;
  10.  
  11. int suma( struct estructura_amigo * );
  12.  
  13. int main()
  14. {
  15.     int i;
  16.     for(i=0; i<3; i++){
  17.       printf("Nombre: ");
  18.       scanf( "%29s",amigo[i].nombre);
  19.       printf("Edad: ");
  20.       scanf( "%d", &amigo[i].edad );
  21.     }
  22.     for(i=0; i<3; i++)
  23.       printf( "%s tendra %d anios dentro de 20 anios.\n",arg_amigo->nombre,arg_amigo->edad,suma(&amigo) );
  24.     getchar();
  25.     getchar();
  26. }
  27.  
  28. int suma( struct estructura_amigo *arg_amigo )
  29. {
  30.     return arg_amigo->edad + 20;
  31. }