Título: Problema con acceder a una estructura Publicado por: Wd10 en 19 Enero 2013, 23:46 pm Hola a todo el EH, me gustaría saber si podrian ayudarme, mi problema es este:
tengo una estructura: typedef struct _RE_MORE { BYTE r1; BYTE r2; BYTE r3; BYTE r4; WORD r5; WORD r6; DWORD RX1; DWORD RX2; } RE_MORE, *LPRE_MORE; typedef struct _Game02 { WORD re1; WORD re2; WORD re3; RE_MORE remore[1]; } Game02 , *PGame02 ; ahora declaro tengo un puntero de tipo Game02 y quiero acceder al miembro r1: PGame02 puntero Variable = puntero->remore[0].r1; pero en variable no me almacena el valor que esta en r1. por favor podrian decirme como puedo resolver este problema y cual es la mejor forma de hacerlo? Gracias Título: Re: Problema con acceder a una estructura Publicado por: avesudra en 20 Enero 2013, 00:24 am ¿Has puesto a apuntar el puntero hacia la estructura? te dejo un code que funciona:
Código
Título: Re: Problema con acceder a una estructura Publicado por: Wd10 en 20 Enero 2013, 00:30 am Hola gracias por responder, pero a mi no me funciona :huh:
veras hice este codigo: #include <stdio.h> #include <windows.h> typedef struct _RE_MORE { BYTE r1; // 7 BYTE r2; // 8 BYTE r3; // 9 BYTE r4; // 10 WORD r5; // 11,12 WORD r6; DWORD RX1; DWORD RX2; }RE_MORE,*LPRE_MORE; typedef struct _Game02 { WORD re1; // 1,2 WORD re2; // 3,4 WORD re3; // 5,6 RE_MORE remore[1]; } Game02 , *PGame02 ; BYTE pruebaarray[50] = {1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30}; int main(int argc, char *argv[]) { PGame02 gameP = (PGame02)pruebaarray; int variable = gameP->remore[0].r1; printf("Variable %d",variable); return 0; } hice ese array para ver si de verdad obtenia el valor correcto y no me funciono Título: Re: Problema con acceder a una estructura Publicado por: x64core en 20 Enero 2013, 00:42 am El problema es el alineamiento de la estructura, todo depende del compilador que utilices, y de los parametros que son pasados al compilador, generalmente los miembros de una estructura se alinean al tamaño de un DWORD, debido a que la accesos a posiciones de memoria por la CPU son más rapido si estan alineados , por eso mismo debes verificarlo, que compilador estas usando?
en VC++ se podes hechar una miraba a /zp o usar #pragma pack(push) #pragma pack(alineamiento) // Tu estructura #pragma pack(pop) Título: Re: Problema con acceder a una estructura Publicado por: Wd10 en 20 Enero 2013, 00:53 am Gracias a todos eso era! ;-)
Aunque aun no entiendo bien |