私は次のcプログラムを持っています
struct in_addr {
unsigned long s_addr; // load with inet_aton()
};
struct sockaddr_in {
short a;
unsigned short b;
struct in_addr c;
char d[8];
};
int main(int argc, char** argv) {
struct sockaddr_in *record1;
record1 = (struct sockaddr_in*)malloc(sizeof(struct sockaddr_in*));
memset(record1, 0, 14);
record1->a = 16;
record1->b = 4;
//strcpy(record1->sin_zero, "1");
printf("Struct record1: %x", *record1);
}
record1->a = 16を単独で割り当てると、「 Struct record1: 10」が得られます
record1->a = 16とrecord1->b =4を割り当てると 、「Struct record1:40010」が得られます (リトル エンディアンであることがわかりますが、それでも*期待される出力は04 10 * (short はそれぞれ 2 バイトかかります) )))
record1->a=16;を割り当てると、* record1->b =4; * record1->c.s_addr = 1UL; * strcpy(record1->d, "1"); ※出力は「Struct record1: 40010」のまま(Yはlongへの代入でchar[]は反映されていない?)
誰でもこの動作を説明できますか? 構造体の内容がメモリにどのように割り当てられているかを確認したい。これを達成するためのよりスマートな方法はありますか?