一、#define宏大小
見例子
二、空結構體大小
根編譯器有關
三、柔性數組
不常用,可看看
#include#define N 4 #define STR "abcd" int main() { struct student { }stu; printf("N = %d\n", sizeof(N)); printf("num 5 memery = %d\n", sizeof(5)); printf("char 'd' = %d\n", sizeof('d')); printf("STR = %d\n", sizeof(STR)); printf("a = %d\n",sizeof(stu)); // 在編譯器gcc、mingw5下輸出0,在vc++6.0中輸出1(我使用的mingw5編譯器),在vc++6.0中默認結構體最小大小為1字節(包含空結構體和只含一個char類型的結構體) /* 柔性數組測試 可以參考《C語言深度解剖》 */ printf("\n柔性數組測試\n"); typedef struct test { int i; int a[]; // 此數組前必須包含一個其它成員 }te; printf("sizeof(te) = %d\n", sizeof(te)); // int a[] 不是結構體中的成員 te *p = (te*)malloc(sizeof(te) + sizeof(int) * 100); p->a[0] = 13; printf("p->a[0] = %d\n",p->a[0]); printf("sizeof(p) = %d\n", sizeof(p)); // 大小仍然為4,因為int a[] 不是結構體中的成員 return 0; }