第7章 结构体、共同体和枚举类型_第1页
第7章 结构体、共同体和枚举类型_第2页
第7章 结构体、共同体和枚举类型_第3页
第7章 结构体、共同体和枚举类型_第4页
第7章 结构体、共同体和枚举类型_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3第第7章章 结构体、共用体和枚举类型结构体、共用体和枚举类型7.17.1结构体结构体7.27.2共用体共用体7.37.3枚举类型枚举类型7.47.4typedeftypedef4& 结构体是一种结构体是一种构造构造数据类型数据类型& 用途:把用途:把不同类型不同类型的数据组合成一个整体的数据组合成一个整体 -自定义自定义数据类型数据类型struct 结构体名结构体名 类型类型1 成员名成员名1; 类型类型2 成员名成员名2; .;成员类型可以是基本型或构造型struct是是关键字关键字, ,不能省略不能省略合法标识符可省:无名结构体7.1.1结构体类型声明结构体类型声明7.1

2、7.1 结构体结构体 结构体类型声明结构体类型声明5例例 struct student int num; char name20; char sex; int age; float score; ; 结构体类型定义描述结构的组织形式,不分配内存struct student应作为一个类型整体,应作为一个类型整体,num,name20等都只是其中的成员,且等都只是其中的成员,且struct及及“”后的后的“;”不能省略。不能省略。7.17.1 结构体结构体6例例住宿表住宿表 structaccommod charname20; /*姓名姓名*/ charsex;/*性别性别*/ char job4

3、0; /*职业职业*/ int age; /*年龄年龄*/ long number; /*身份证号码身份证号码*/;7.17.1 结构体结构体77.1.2结构体变量的定义结构体变量的定义1.先定义结构体类型,再定义结构体变量先定义结构体类型,再定义结构体变量n一般形式:一般形式: struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名; 类型标识符类型标识符 成员名;成员名; .;struct 结构体名结构体名 变量名表列变量名表列;structstudent intnum; charname20; charsex; intage; floatscore;structstuden

4、tstudent1,student2;7.17.1 结构体结构体82.定义结构体类型的同时定义结构体变量定义结构体类型的同时定义结构体变量 struct struct 结构体名结构体名 类型标识符类型标识符 成员名;成员名; 类型标识符类型标识符 成员名;成员名; . 变量名表列变量名表列;例例 struct student int num; char name20; char sex; int age; float score; student1,student2;7.17.1 结构体结构体93.直接定义结构体变量直接定义结构体变量structstruct 类型标识符类型标识符 成员名;成员

5、名; 类型标识符类型标识符 成员名;成员名; . 变量名表列变量名表列;例例 struct intnum; charname20; charsex; intage; floatscore; student1,student2;用用无名结构体无名结构体直接定义直接定义变量变量只能一次只能一次7.17.1 结构体结构体107.1.3结构体变量的引用结构体变量的引用引用规则引用规则n 结构体变量结构体变量不能整体引用不能整体引用, ,只能引用变量只能引用变量成员成员引用方式:引用方式: 结构体变量名结构体变量名. .成员名成员名如果结构体变量类型相同,可以将一个结如果结构体变量类型相同,可以将一个结

6、构体变量赋值给另一个结构体变量构体变量赋值给另一个结构体变量结构体嵌套时结构体嵌套时逐级引用逐级引用例例;student2=student1; 例:例:stu1.birthday.day=23;stu1.birthday.month=8;stu1.birthday.year=2003;7.17.1 结构体结构体117.1.4结构体变量的使用结构体变量的使用1 1、 结构体变量的初始化结构体变量的初始化与其他类型变量一样,对结构体变量也可以在定义时进行初始与其他类型变量一样,对结构体变量也可以在定义时进行初始化赋值,但附在变量后面的一组数据须用花括号括起来,其顺化赋值,但附在变量后面的一组数据须

7、用花括号括起来,其顺序应与结构体中的成员顺序保持一致。序应与结构体中的成员顺序保持一致。例例 struct student intnum; charname20; charsex; intage; floatscore; student1 =11301,Zhang San,F,19,496.5;7.17.1 结构体结构体127.17.1 结构体结构体n2、同一种类型的结构体变量之间可直接赋值、同一种类型的结构体变量之间可直接赋值可以将一个结构体变量作为一个整体赋给另一个具可以将一个结构体变量作为一个整体赋给另一个具有相同类型的结构体变量。有相同类型的结构体变量。例:例:student2=stu

8、dent1;3 3、结构体变量的输入输出、结构体变量的输入输出不允许对结构体变量进行不允许对结构体变量进行整体整体的输入输出。的输入输出。如:如:scanf(%d,%s,%c,%d,%f,&student1);/*错错*/ printf(%d,%s,%c,%d,%f,student1); /*错错*/134. 对成员变量可以象普通变量一样进行各种操作。对成员变量可以象普通变量一样进行各种操作。 例:例: student1.num=11301; scanf(%s,&); student2.score=student2.score+1; printf(%f

9、,student2.score);7.1 7.1 结构体结构体147.17.1 结构体结构体struct studentint num;int age;float score;stu;void main() printf(Enter num,age,score:);scanf(%d,%d,%f,&stu.num,&stu.age,&stu.score);printf(num:%d,age:%d,score:%.1fn,stu.num,stu.age,stu.score);程序运行过程:程序运行过程:Enter num,age,score:1001,19,98.5 num

10、:1001,age:19,score:98.5例:输入一个学生的一组数据,然后输出。例:输入一个学生的一组数据,然后输出。分析:用成员运算符引用结构体成员。分析:用成员运算符引用结构体成员。151.结构体数组的定义结构体数组的定义形式一形式一: : struct student int num; char name20; char sex; int age; ;struct student stu2;形式二形式二: : struct student int num; char name20; char sex; int age; stu2;形式三形式三: struct int num; cha

11、r name20; char sex; int age; stu2;numnamesexagenumnamesexagestu0stu125B7.1.5结构体数组结构体数组7.17.1 结构体结构体16引用方式:引用方式: 结构体数组名结构体数组名下标下标.成员名成员名 struct student int num; char name20; char sex; int age; str3;stu1.age+;strcpy(,“ZhangSan”);2.结构体数组元素的引用结构体数组元素的引用7.17.1 结构体结构体177.27.2共用体共用体7.2.1共用体类型声明共用体

12、类型声明&构造数据类型构造数据类型&用途:使几个不同类型的变量共占一段内存用途:使几个不同类型的变量共占一段内存(相互覆盖相互覆盖)union 共用体类型名共用体类型名 类型类型1 成员名成员名1; 类型类型2 成员名成员名2; .;例例 union data int i; char ch; float f; ;类型定义类型定义不分配内存不分配内存187.2.2共用体变量定义共用体变量定义形式二形式二: : union data int i; char ch; float f; a,b;fchifchiab形式一形式一: : union data int i; char ch;

13、 float f; ; union data a,b;形式三形式三: : union int i; char ch; float f; a,b;共用体变量分配内存,长度=最长成员所占字节数共用体变量任何时刻只有一个成员存在7.27.2共用体共用体197.2.3共用体变量的引用共用体变量的引用引用方式:引用方式: 共用体变量名共用体变量名. .成员名成员名引用规则引用规则n不能引用共用体变量,只能不能引用共用体变量,只能引用其成员引用其成员n共用体变量中起作用的成员是共用体变量中起作用的成员是最后一次存放的成员最后一次存放的成员n可以用一个共用体变量为另一个共用体变量赋值可以用一个共用体变量为另

14、一个共用体变量赋值n共用体变量的地址和它的各个成员的地址相同共用体变量的地址和它的各个成员的地址相同n共用体变量不能作函数参数,函数的返回值也不共用体变量不能作函数参数,函数的返回值也不能是共用体类型能是共用体类型n共用体类型和结构体类型可以相互嵌套,共用体共用体类型和结构体类型可以相互嵌套,共用体中成员可以为数组,甚至还可以定义共用体数组中成员可以为数组,甚至还可以定义共用体数组7.27.2共用体共用体207.37.3枚举类型枚举类型7.3.1枚举类型的声明枚举类型的声明&枚举数据类型枚举数据类型,指这种类型变量的取值只能限于事前指这种类型变量的取值只能限于事前已经一一列举出来的值的

15、范围已经一一列举出来的值的范围 enum 枚举类型名枚举类型名 枚举常量名枚举常量名1,枚举常量名,枚举常量名2. ;例例 enum weekday sun, mon, tue, wed, thu, fri, sat; 217.3.2枚举类型变量的定义枚举类型变量的定义形式二:形式二: enum weekday sun, mon, tue, wed, thu, fri, sat week1,week2 ; 形式一:形式一: enum weekday sun, mon, tue, wed, thu, fri, sat; enum weekday week1,week2;形式三:形式三: enum sun, mon, tue, wed, thu, fri, sat week1,week2 ; 7.37.3枚举类型枚举类型227.47.4用用typedeftypedef定义类型定义类型typedef的概念的概念&功能:用自定义名字为已有数据类型命名功能:用自定义名字为已有数据类型命名& 类型定义简单形式:类型定义简单形式: typedeftypedeftypetypename;name;例例 typedef int INTEGER;例例 typedef float REAL;类型定义后类型定义后, ,与已有类型一样使用与已有类型一样使用例例 INTEGER a,b

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论