#include <stdio.h>
#include <string.h>
#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;
}
N = 4
num 5 memery = 4
char 'd' = 4
STR = 5
a = 0
柔性數組測試
sizeof(te) = 4
p->a[0] = 13
sizeof(p) = 8