资源描述:
《第10章结构体、共用体、枚举类.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、个人收集整理勿做商业用途1ﻩ 声明一个结构体类型的一般形式为: struct 结构体名 {成员表列};如:structstudent { intnum;charname[20];charsex; intage;float score;charaddr[30]; };2定义结构体类型变量的方法 (1)先声明结构体类型再定义变量名例如:structstudent student1,student2;
2、
3、
4、 结构体类型名 结构体变量名(2)在声明类型的同时定义变量 这种形式的定义的一般形式为: str
5、uct 结构体名 { 成员表列 }变量名表列;(3)直接定义结构体类型变量其一般形式为: struct { 成员表列 }变量名表列;即不出现结构体名。注意: 成员名可以与程序中的变量名相同,二者不代表同一对象。3ﻩ可以引用结构体变量成员的地址,也可以引用结构体变量的地址。例如: scanf(″%d″,&student1.num); (输入student1.num的值) printf(″%o″,&student1);(输出student1的首地址)4ﻩ结构体数组的初始化structstudent{int num
6、;charname[20];charsex; intage;floatscore;charaddr[30]; }stu[2]={{10101,″LiLin″,′M′,18,87.5,″103BeijingRoad″},{10102,″Zhang Fun″,′M′,19,99,″130 ShanghaiRoad″}};个人收集整理勿做商业用途5指向结构体变量的指针#include#include7、 char sex;floatscore;};structstudentstu_1; structstudent*p;p=&stu_1;stu_1.num=89101;strcpy(stu_1.name,”LiLin”);ﻫ stu_1.sex=‘M’;stu_1.score=89.5;printf(″No.:%ldname:%ssex:%c\nscore:%f\n″,stu-1.num,stu-1.name,stu-1.sex,stu-1.score);ﻫ printf(″No.:%ld\nname:%ssex:%c
8、\nscore:%f\n″,(*p).num,(*p).name,(*p).sex,(*p).score);}6ﻩ以下3种形式等价:结构体变量.成员名(*p).成员名p->成员名7用指针处理链表(1)malloc函数(2)calloc函数(3)free函数其函数原型为void free(void*p);7.1typedefstruct{int n;struct{int y,m,d;}date;}PERSON;下面定义结构体数组并赋初值PERSONx[2]={1,04,10,1,2,04,12,30};PERSONx[2]={{1,04,1
9、0,1},{2,04,12,30}};PERSONx[2]={1,{04,10,1},2,{04,12,30}};7.2ﻩstructpersonﻩ{个人收集整理勿做商业用途ﻩintid;ﻩcharname[10];}per={1,"123456"};per.name="123456"Per.name[0]='1'7.3structsk{int n;floatx;}date,*p;要使p指向date中的n域:p=(structsk *)&date.n;8共用体的概念ﻩ使几个不同的变量共占同一段内存的结构称为“共用体”类型的结构。共用体变量
10、所占的内存长度等于最长的成员的长度。不能引用共用体变量,而只能引用共用体变量中的成员。不能对共用体变量名赋值,不能企图引用变量名来得到一个值,不能在定义共用体变量时对它初始化(只有一个成员时可以,也可以只初始化一个值)。不能把共用体变量作为函数参数,不能使函数带回共用体变量,但可以使用指向共用体变量的指针8.1声明共用体类型、定义共用体类型变量的方法与结构体类型一样9ﻩ枚举类型:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。说明:(1)在C编译中,对枚举元素按常量处理,故称枚举常量。它们不是变量,不能对它们赋值。(2)枚举元
11、素作为常量,它们是有值的,C语言编译个人收集整理勿做商业用途按定义时的顺序使它们的值为0,1,2…(3) 枚举值可以用来作判断比较。 (4)一个整数不能直接赋给一个枚举变量。9.1声明枚举类型