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

下载本文档

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

文档简介

1、C 语 言 程 序 设 计湖北民族学院信息工程学院 张 帆zhang_hbmy第7章 结构体、共用体枚举类型、typedef3第7章 结构体、共用体和枚举类型7.1结构体7.2共用体7.3枚举类型7.4typedef4 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体 -自定义数据类型struct 结构体名 类型1 成员名1; 类型2 成员名2; .;成员类型可以是基本型或构造型struct是关键字,不能省略合法标识符可省:无名结构体7.1.1结构体类型声明7.1 结构体 结构体类型声明5例 struct student int num; char na

2、me20; char sex; int age; float score; ; 结构体类型定义描述结构的组织形式,不分配内存struct student应作为一个类型整体,num,name20等都只是其中的成员,且struct及“”后的“;”不能省略。7.1 结构体6例住宿表 structaccommod charname20; /*姓名*/ charsex;/*性别*/ char job40; /*职业*/ int age; /*年龄*/ long number; /*身份证号码*/;7.1 结构体77.1.2结构体变量的定义1.先定义结构体类型,再定义结构体变量一般形式: struct 结

3、构体名 类型标识符 成员名; 类型标识符 成员名; .;struct 结构体名 变量名表列;structstudent intnum; charname20; charsex; intage; floatscore;structstudentstudent1,student2;7.1 结构体82.定义结构体类型的同时定义结构体变量 struct 结构体名 类型标识符 成员名; 类型标识符 成员名; .变量名表列;例 struct student int num; char name20; char sex; int age; float score; student1,student2;7.1

4、 结构体93.直接定义结构体变量struct 类型标识符 成员名; 类型标识符 成员名; .变量名表列;例 struct intnum; charname20; charsex; intage; floatscore; student1,student2;用无名结构体直接定义变量只能一次7.1 结构体107.1.3结构体变量的引用引用规则 结构体变量不能整体引用,只能引用变量成员引用方式: 结构体变量名.成员名如果结构体变量类型相同,可以将一个结构体变量赋值给另一个结构体变量结构体嵌套时逐级引用例;student2=student1; 例:stu1.birthday.day=23;stu1.b

5、irthday.month=8;stu1.birthday.year=2003;7.1 结构体117.1.4结构体变量的使用1、 结构体变量的初始化与其他类型变量一样,对结构体变量也可以在定义时进行初始化赋值,但附在变量后面的一组数据须用花括号括起来,其顺序应与结构体中的成员顺序保持一致。例 struct student intnum; charname20; charsex; intage; floatscore; student1 =11301,Zhang San,F,19,496.5;7.1 结构体127.1 结构体2、同一种类型的结构体变量之间可直接赋值可以将一个结构体变量作为一个整体

6、赋给另一个具有相同类型的结构体变量。例:student2=student1;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,student2.score);7.1 结构体147.1 结构体struct studenti

7、nt 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.5num:1001,age:19,score:98.5例:输入一个学生的一组数据,然后输出。分析:用成员运算符引用结构体成员。151.结构体数组的定义形式一: struc

8、t 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; char name20; char sex; int age; stu2;numnamesexagenumnamesexagestu0stu125B7.1.5结构体数组7.1 结构体16引用方式: 结构体数组名下标.成员名 struct student int num; char

9、name20; char sex; int age; str3;stu1.age+;strcpy(,“ZhangSan”);2.结构体数组元素的引用7.1 结构体177.2共用体7.2.1共用体类型声明构造数据类型用途:使几个不同类型的变量共占一段内存(相互覆盖)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形式一: un

10、ion data int i; char ch; float f; ; union data a,b;形式三: union int i; char ch; float f; a,b;共用体变量分配内存,长度=最长成员所占字节数共用体变量任何时刻只有一个成员存在7.2共用体197.2.3共用体变量的引用引用方式: 共用体变量名.成员名引用规则不能引用共用体变量,只能引用其成员共用体变量中起作用的成员是最后一次存放的成员可以用一个共用体变量为另一个共用体变量赋值共用体变量的地址和它的各个成员的地址相同共用体变量不能作函数参数,函数的返回值也不能是共用体类型共用体类型和结构体类型可以相互嵌套,共用体

11、中成员可以为数组,甚至还可以定义共用体数组7.2共用体207.3枚举类型7.3.1枚举类型的声明枚举数据类型,指这种类型变量的取值只能限于事前已经一一列举出来的值的范围 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.3枚举类型227.4用typedef定义类型typedef的概念功能:用自定义名字为已有数据类型命名 类型定义简单形式: typedeftypename;例 typedef int INTEGER;例 typedef fl

温馨提示

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

评论

0/150

提交评论