• Miércoles 20 de Noviembre de 2024, 14:18

Autor Tema:  Re: Paso de una estrucutra a una funcion,como repanpanos se  (Leído 2071 veces)

vrp

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Paso de una estrucutra a una funcion,como repanpanos se
« en: Lunes 23 de Diciembre de 2002, 15:22 »
0
Hola, no se xq me da un warning esto, es un programa de 19 lineas, gracias
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Paso de una estrucutra a una funcion,como repanpanos se
« Respuesta #1 en: Lunes 3 de Marzo de 2003, 20:06 »
0
: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:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Paso de una estrucutra a una funcion,como repanpanos se
« Respuesta #2 en: Lunes 3 de Marzo de 2003, 20:17 »
0
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:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Paso de una estrucutra a una funcion,como repanpanos se hace
« Respuesta #3 en: Lunes 17 de Marzo de 2003, 23:06 »
0
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:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io