SoloCodigo

CLR: .Net / Mono / Boo / Otros CLR => C# => Mensaje iniciado por: vrp en Lunes 23 de Diciembre de 2002, 15:22

Título: Re: Paso de una estrucutra a una funcion,como repanpanos se
Publicado por: vrp en Lunes 23 de Diciembre de 2002, 15:22
Hola, no se xq me da un warning esto, es un programa de 19 lineas, gracias
Título: Re: Paso de una estrucutra a una funcion,como repanpanos se
Publicado por: JuanK en Lunes 3 de Marzo de 2003, 20:06
:alien: ... bueno fijate...
#include <stdio.h>
#include <conio.h>


void p(struct victor *v){
printf("holaaa");
}


/*
*
*/
void main(){
   struct victor{
      int h;
   } *array[10];


   int i;
   for(i=0;i<10;i++)
   array.h=0;
   

   p(array);
}

he declarado la variable array como un  apuntadora una estructurs de datos de tipo Victor, que es finalmente lo que pretendes recibir cuando dices:
void p(struct victor *v) el * indica quen recibiras un apuntador...
por otro lado cuando dices:
p(array);
ya estas enviando el apundador.. por que lo has definido como apuntador más arriba..

Otra opción , creo que seria dejar todo como lo tienes y hacer:
p(*array);

De todos modos te advierto que ya hace mucho rato que no programo en c y que te estoy contestando desde mi oficina y aqui no tengo como compilar para asegurartte que el codigo que te doy esta bien, suerte.
:lightsabre:
Título: Re: Paso de una estrucutra a una funcion,como repanpanos se
Publicado por: JuanK en Lunes 3 de Marzo de 2003, 20:17
ademas seria de gran utilidad si nos muestras el error.
me imaghino que debe ser algo como

suspicious null pointer asignement


por otro lado con las modificaciones que te hice ..
esta linea tambien cambia..
array.h=0;
y queda
array->h=0;
porque hacemos referencia a un segmento de memoria desde su direccion inicial...se lee algo asi como array(apuntador) que apunta a h.

igual que el anterior comentario.. no lo puedo compilar :lightsabre:
Título: Paso de una estrucutra a una funcion,como repanpanos se hace
Publicado por: JuanK en Lunes 17 de Marzo de 2003, 23:06
bueno, ya instale el compilador,
esta es una adaptacion de tu programa para que puedas pasar los parametros:
1.declaré la estructura omo global para poder pasarsela a la funcion, ya que de otro modo la funcion no podria saber que tipo de dato le estoy pasando.
2-Cambie la funcion a debajo del main, ya que ese es mi estilo de programar.:P
3-En este caso pase la estructura como referencia, es decir le entrgue a la funcion la direccion de memoria de mi estructura:
 
Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <conio.h>
  4.  
  5. struct victor
  6. {
  7.   int h;
  8. };
  9.  
  10. void p(struct victor *);
  11.  
  12. int main()
  13. {
  14.   int i;
  15.   struct victor array[10];
  16.  
  17.   for(i=0;i<10;i++)
  18.     array[i].h=0;
  19.   p(array);
  20.   return(int)1;
  21. }
  22. void p(struct victor *v)
  23. {
  24.  printf("holaaa");
  25. }
  26.  
4-en este caso lo hice por valor, es decir le entregue a la funcion el contenido de la direccion de memoria de mi estructura y lo recibi como un espacio completo de memoria:
 
Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <conio.h>
  4.  
  5. struct victor
  6. {
  7.   int h;
  8. };
  9.  
  10. void p(struct victor );
  11.  
  12. int main()
  13. {
  14.   int i;
  15.   struct victor array[10];
  16.  
  17.   for(i=0;i<10;i++)
  18.    array[i].h=0;
  19.   p(*array);
  20.   return(int)1;
  21. }
  22.  
  23. void p(struct victor v)
  24. {
  25.  printf("holaaa");
  26. }
  27.  
  28.  
:lightsabre: