【发布时间】:2010-04-09 14:43:47
【问题描述】:
下面是不使用 sizeof 运算符求结构体大小的程序:
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 - 为什么?
【问题讨论】:
-
提醒:结构的大小可能不等于其成员(字段)大小的总和。允许编译器在结构的成员之间插入填充字节。一个例子是在地址上对齐变量,以便处理器有效地获取。
标签: c