Пытаюсь разобраться как хранятся в памяти данные структуры:
#include <stdio.h>
struct Data {
short id;
double val;
};
typedef struct Data Data;
int main() {
Data myData = {50, 1.2};
char *ptr = (char *)&myData;
printf("size struct = %ld\n", sizeof(Data));
printf("size int = %ld\n", sizeof(int));
printf("size double = %ld\n", sizeof(double));
printf("%p:\t", ptr);
for(int i=0; i<sizeof(myData); ++i) {
printf("%02x ", *(ptr+i) );
}
putchar('\n');
return 0;
}
Получаю такой вывод:
size struct = 16
size int = 4
size double = 8
0x7ffc3eeb9930: 32 00 11 49 02 56 00 00 33 33 33 33 33 33 fffffff3 3f
я понимаю что 32 00 11 49 - это интовское значение - но как его расшифровать, что там 50? аналогично с double, Как в данном выводе понять где выравнивание происходит?