下面是找到一個結構的大小,而無需使用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