C/Visual C - Punteros

 
Vista:

Punteros

Publicado por Bernat (3 intervenciones) el 27/11/2010 20:04:34
Hola, yo tengo un vector de struct, y lo que quiero es pasarselo a una funcion (inicializar struct) y desde alli inicializar todos los valores y quando salga de esta funcion que los valores se queden en el vector game.

Un codigo de ejemplo para que os hagais una idea,

typedef struct
{
int acierto;
Pieza blanca; (una struct Pieza)
Tablero tipo;(otra Struct)
}Juego;

void inicializar(Juego *game)
{
int i;
for(i=0;i<10;i++)
{
game[i].acierto=10;//Quando salgo de esta funcion y leo los valores en el main, no se han guardado
}

}

main()
{

Juego game[20];

inicializar(game);

imprimir(game[2]);
//imprime un 0 no el valor generado anteriormente.

}


Muchas gracias y saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Punteros

Publicado por pepe (32 intervenciones) el 27/11/2010 21:17:58
Creo que el error está en la función imprimir, para comprobar valores utiliza el visor de variables o Watch que tenga el IDE que uses.

El código que has puesto funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por Bernat (3 intervenciones) el 27/11/2010 21:55:57
Hola, donde pone imprimir pon un printf("%d",game[2]);

No se porque no me funciona, los valores que tiene la variable en la funcion solo son validos dentro de la funcion, quando salgo, la var game del main, sigue teniendo sus valores NO modificados...

Mi intencion era que la funcion inicializara todos los valors, passandole por parametro el array que tengo, sin tener que hacer la variable game global.

Muchas gracias por responder
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por pepe (32 intervenciones) el 27/11/2010 22:29:06
Tienes buena intención, de hecho es la manera de trabajar con arrays, y por supuesto hay que evitar en la manera de lo posible las variables globales, yo nunca las uso.

De momento game[2] es el puntero al elemento 3 del array, no al valor acierto, con lo que deberias poner lo siguiente.

printf("%d",game[2].acierto);

Has comprobado los valores en el watch o solamente lo que se imprime?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Punteros

Publicado por Bernat (3 intervenciones) el 27/11/2010 22:53:02
gracias pepe, fue error mio de programacion, tantas horas aqui se te pasan tonterias, efectivamente con un debuger pude ver que funcionava todo bien entonces mire el codigo y el error era en el printf, no puse a imprimir la variable correcta

Gracias y saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar