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
请按任意键继续. . .