您的位置:首页 > 编程语言 > C语言/C++

C语言柔性数组

2015-07-19 15:42 489 查看
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: