本人在编写程序的过程中使用sizeof函数来计算结构体的大小,可是发现了如下的不解:
typedef struct name1{}name1;
typedef struct name2{}name2;
typedef struct name3{}name3;
typedef struct test
{
unsigned char a[4];
unsigned char b[4];
unsigned char c[2];
}test;
typedef struct all{
name1 t1;
name2 t2;
name3 t3;
test t4;
}
然后将内存buf中的一段数据长度是len的数据读入all.test中,此处len=sizeof(test);
memcpy(all.test, buf, len);
结果在输出test结构体中的数据时发现没有只有前四个字节的数据,后边的数据根本没有。使用
for(i = 0; i<sizeof(all); i++) {
printf("%02X ",*((unsigned char*)(&all)+i));
}
总是报错说all只有四个元素,可是使用sizeof(all)发现是等于10,怎么会出现这种问题呢?
求解,不知论坛里有没有了解这方面的高手可以指点一下!