Diapositiva 1 - 清华大学出版社.ppt
文本预览下载声明
10.11 枚举类型 10.11.1 类型的定义和枚举变量的说明 1.枚举的定义 枚举类型定义的一般形式为: enum 枚举名{ 枚举值表 }; 2.枚举变量的说明 即先定义后说明,同时定义说明或直接说明。设有变量a,b,c被说明为上述的weekday类型,可采用下述任一种方式: enum weekday{ sun,mou,tue,wed,thu,fri,sat }; enum weekday a,b,c; 或者为: enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c; 或者为: enum { sun,mou,tue,wed,thu,fri,sat }a,b,c; 10.11.2 枚举类型变量的赋值和使用 枚举类型在使用中有以下规定: 枚举值是常量,不是变量。不能在程序中用赋值语 句再对它赋值。 例如对枚举weekday的元素再作以下赋值: sun=5; mon=2; sun=mon; 都是错误的。 枚举元素本身由系统定义了一个表示序号的数值,从0开始 顺序定义为0,1,2…。如在weekday中,sun值为0,mon值 为1,…,sat值为6。 【例10-17】枚举类型变量的使用。 #include stdio.h void main() { enum weekday { sun,mon,tue,wed,thu,fri,sat } a,b,c; a=sun; b=mon; c=tue; printf(%d,%d,%d,a,b,c); } 【例10-6】建立同学通讯录 #includestdio.h #define NUM 3 struct mem { char name[10]; char phone[12]; }; void main() { struct mem man[NUM]; int i; for(i=0;iNUM;i++) { printf(input name:\n); gets(man[i].name); printf(input phone:\n); gets(man[i].phone); } printf(name\t\t\tphone\n\n); for(i=0;iNUM;i++) printf(%s\t\t\t%s\n,man[i].name,man[i].phone); } 10.7 结构体指针变量的说明和使用 10.7.1 指向结构体变量的指针变量 结构体指针变量说明的一般形式为: struct 结构体名 *结构体指针变量名 例如,在前面的例题中定义了stu这个结构体, 如要说明一个指向stu的指针变量pstu,可写为: struct stu *pstu; 如果boy是被说明为stu类型的结构体变量,则: pstu=boy 而: pstu=stu ? ? 结构体名和结构体变量是两个不同的概念,不 能混淆。结构体名只能表示一个结构形式,是用户 自定义的数据类型,与基本数据类型一样,编译系 统并不对它分配内存空间。只有当某变量被说明为 这种类型的结构体变量时,才对该变量分配存储空 间。 有了结构体指针变量,就能更方便地访问结构体变量 的各个成员。 指针变量访问的一般形式为: (*结构体指针变量).成员名 或为: 结构体指针变量-成员名 例如: (*pstu).num 或者: pstu-num 应该注意(*pstu)两侧的括号不可少,因为成员符“.”的优 先级高于“*”。如去掉括号写作*pstu.num则等效于 *(pstu.num),这样,意义就完全不对了。 【例10-7】结构体指针变量的使用。 #includestdio.h struct stu { int num; char *name; char sex; float score; } boy1={102,Zhang ping,M,78.5},*pstu; void main() { pstu=boy1; printf(Number=%d\nName=%s\n,boy1.num,); printf(Sex=%c\nScore=%f\n\n,boy1.sex,boy1.score); printf(Number=%d\nName=%s\n,(*pstu).num,(*pstu
显示全部