下面是找到一个结构的大小,而无需使用sizeof操作符的程序:为什么我的homeopen sizeof运算符需要char *转换?
struct MyStruct
{
int i;
int j;
};
int main()
{
struct MyStruct *p=0;
int size = ((char*)(p+1))-((char*)p);
printf("\nSIZE : [%d]\nSIZE : [%d]\n", size);
return 0;
}
为什么类型转换为char *必需的?
如果我不使用char *指针,输出为1 - 为什么?
提醒:结构的大小可能不等于其成员(字段)大小的总和。编译器允许在结构中的成员之间插入填充字节。一个例子是在地址上对齐处理器有效的变量来获取。 – 2010-04-09 17:22:06