Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/03/2010, 11:25
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 11 meses
Puntos: 61
Respuesta: proplema con paso de punteros de structuras a funciones

En C todos los parametros se pasan por valor, por tanto no puedes modificar directamente nada al interior de una funcion.

Por ejemplo:

Código C:
Ver original
  1. void f( int valor )
  2. {
  3.    valor = 0;
  4. }
y en el main ..

Código C:
Ver original
  1. int i = 3;
  2.  
  3. // i vale 3
  4.  
  5. f(i);    // f no cambia a i, cambia a una copia de i
  6.  
  7. // i sigue valiendo 3

Lo mismo pasa con los punteros. Estas pasando punteros y quieres modificarlos, lo que en C no se puede.
Para lograrlo, pasa la direccion de memoria de ellos y recibelos en un puntero a puntero, y luego modificas lo apuntado, asi:

Código C:
Ver original
  1. void f( int ** p )
  2. {
  3.   *p = malloc( ... );
  4. }
  5.  
  6. main()
  7. {
  8.    int *puntero;
  9.  
  10.    f( &puntero );
  11.  
  12. }