//按字节输出结构体
#include <stdio.h>
struct test{char c;int n;};
int main(){
int i;
struct test a={'a',0xffff};
for(i=0;i<sizeof(struct test);i++){
printf("%2x ",((char*)&a)[i]);
}
return 0;
}
以上代码实现“按字节输出结构体”的功能。首先定义struct test,它包含一个char和一个int,因为要对齐到4字节,所以,整个结构体的长度是8字节。
运行此程序,可知,结构体的第一个字节是字母a的ASCII值,0x61。第二三四字节内容不确定。第五六七八字节是ff ff 00 00,因为这台机器是小端的。
关于大端、小端,简单叙述一下:数字0x12345678储存成12 34 56 78的是大端,储存成78 56 34 12的是小端。
((char*)&a)[i],这一句的解释:先取a的地址,强制转换成char*,再取第i号成员。