struct INFO { double a, b; };

 

struct { int num; INFO  ar[1024]; } data;

 

 

 

int main ()

{

 

void* ptr;

int num;

INFO *ar_1, *ar_2;

 

// initialize my data

data.num = 2;
data.ar[0].a = 0.1;
data.ar[0].b = 0.2;

 

// retrieve each value from the data from a (void*) type pointer

ptr = &data;

num = *(int*)ptr;

ar_1 = (INFO*)((int*)ptr + 1);

ar_2 = (INFO*)((int*)ptr + 2);

 

// result : num is 2

printf("num is %d \n", num);

 

// result : ar_1 points to (0.0, 0.0),

// which is wrong value

printf("ar_1 points to (%lf, %lf) \n", ar_1[0].a, ar_1[0].b);

 

// result : ar_2 points (0.1, 0.2),

// which is correct value

printf("ar_2 points to (%lf, %lf) \n", ar_2[0].a, ar_2[0].b);

 

return 0;

 

}

 

 

 

나한테 구조체 data 가 있는데

 

data는 처음 4 바이트가 int num 이고

 

그 뒤로 배열 데이타가 있으니까

 

ar_1 = (INFO*)((int*)ptr + 1);

 

이 ar_1 이 배열 데이타를 가리키고 있을줄 알았는데

 

 ar_2 = (INFO*)((int*)ptr + 2);

 

이 ar_2 한테서 배열 데이타가 올바르게 읽어 지더라고

 

왜 이런건지 모르겠다. 눅누가 설명좀