第9章 结构体数据类型与链表
第10章 共用体与枚举类型
1: 答: 共用体使几种不同类型的值存放在同一内存区域中。 例如, 把一个整型值和字符值放在同一个存储区域, 既能以整型存储, 又能以字符存储。共用体类型的定义形式与结构体的定义形式相同, 只是其类型关键字不同,共用体的关键字为union.一般 形式为:
union 共用体类型名
{
成员列表
};
例如: union data
{
int i;
char ch;
float f;
};
2: 答: 共用体不同与结构体,某一时刻,存与共用体的只有一种数据,而结构体是所有成分都存储着的。即共用体是几种数据值的覆盖存储,几种不同类型的数据值从同一地址开始存储,但是任一时刻只能存储其中一种数据,而不是同时存储多种数据。分配给共用体的存储区域大小至少要有存储其中最大的一种数据所需要的存储空间量。
3: 答: 在实际应用中,有的变量只有几种可能的取值。如表示颜色的名称,表示月份的名称等。为了提高程序描叙问题的直观性,ANSI C引入允许程序员定义枚举类型的机制。程序用枚举方法列举一组标识符作为枚举类型的值的集合。当一个变量具有这种枚举类型的时,它就能取枚举类型的标识符值。枚举类型的一般形式为:
enum 枚举类型名(标识符1,标识符2,标识符3,......标识符n);
例如:定义一个枚举类型和枚举变量如下:
enum colorname(red,yellow,blue,white,black);
enum colorname color;
4: (1):16
(2):15
(3):5
(4):1
5: 答:在使用标准类型定义或者说明变量时,可只写标准名指明变量数据类型。c语言也提供使用typedef 定义类型,为类型定义命名的机制。用typedef定义新的类型名后,对于结构体,共用体或者枚举类型,使用他们定义或说明变量时不必说明变量时不必再冠以类型类别关键字。
(1)简单的名字替换 例如:typedef int INEEGER
(2) 定义一个类型名代表一个结构体类型 例如:
typedef struct
{ long num;
char name[2];
float score;
}stu;
(3)定义数组类型:例如: typedef int count[20]; count a,b;
(4)定义指针类型: 例如:typedef char *stri; stri p1,p2,p[10];
6 (1): 0,4,5,-2
(2): 177771,177777
(3): C language 404
(4): 0000000001000001