码迷,mamicode.com
首页 > 编程语言 > 详细

程序猿之---C语言细节29(#define宏大小、空结构体大小、柔性数组不知道你见过没)

时间:2014-11-23 21:47:09      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:c语言细节   #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;
}

输出:

bubuko.com,布布扣

程序猿之---C语言细节29(#define宏大小、空结构体大小、柔性数组不知道你见过没)

标签:c语言细节   #define大小   空结构体大小   柔性数组   

原文地址:http://blog.csdn.net/human_evolution/article/details/41415617

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!