首页 > 代码库 > 程序猿之---C语言细节29(#define宏大小、空结构体大小、柔性数组不知道你见过没)
程序猿之---C语言细节29(#define宏大小、空结构体大小、柔性数组不知道你见过没)
主要内容:#define宏大小、空结构体大小、柔性数组
一、#define宏大小
见例子
二、空结构体大小
根编译器有关
三、柔性数组
不常用,可看看
#include <stdio.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; }
输出:
程序猿之---C语言细节29(#define宏大小、空结构体大小、柔性数组不知道你见过没)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。