现在的位置: 首页 > 综合 > 正文

C语言enum 结构 联合类型的使用

2013年10月16日 ⁄ 综合 ⁄ 共 875字 ⁄ 字号 评论关闭

C语言里定义了枚举,结构还有联合类型,后两者是一种构造类型。

枚举的声明如下:

enum 枚举类型名

{

    枚举值表;

};

枚举值表列出所有可用的值,也称为枚举元素。

“结构”是一种构造类型,它是由若干的“成员”组成,这些成员可以是基本类型,也可以是“构造”类型。它的一般形式如下:

struct 结构类型名

{

    成员表;

}

成员表由若干成员组成,每个成员都是该结构的组成部分。

联合跟结构很相似,但有个本质上的区别:结构中,每个成员都有各自的内存空间,结构变量的总长度是各个成员长度之和;而联合类型中,各成员共享一段内存空间,联合变量的长度等于成员中最长的长度。

联合的一般形式:

union 联合类型名

{

    成员表;

}

成员表有若干成员,这些成员共享同一段内存空间。以下是一段测试程序:

/**
*enum struct union测试
*
*/
int main(){
	//enum 的定义和使用
	enum {
	xiaofire, firethinks,ft=0,ft_2013//第一个元素初始值为0,此后依次递增,可以为元素赋值
	}me;
	//结构的定义和使用
	struct Date{
		int year,
		    month,
		    day;
	};
	Date dt,*dp;
	dt.year=2013;
	dp=&dt;
	printf("%d\n",dt.year);
	printf("%d\n",dp->year);
	//联合的定义和使用
	union Testu{
	 int i;
	 Date d;
	};
	Testu *p,u;
	p = &u;
	p ->d.year = 2013;
	printf("%d\t%d\t%d\t%d\t%d\n",xiaofire,firethinks,ft,ft_2013,p ->d.year );
	printf("%d\t%d\t%d\n",p->i,u.d,p->d.month);//p->d.month会得到一个垃圾数
	system("PAUSE");
	return 0;
}

程序的运行结果如下:
2013
2013
0       1       0       1       2013
2013    2013    -858993460
请按任意键继续. . .

【上篇】
【下篇】

抱歉!评论已关闭.