欢迎来到天天文库
浏览记录
ID:40238544
大小:611.50 KB
页数:50页
时间:2019-07-28
《C语言程序设计 王伟 第8章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第八章结构体和共用体本章目录8.1结构体8.2结构体数组8.3指向结构体类型数据的指针8.4链表8.5共用体前面已经介绍了C语言中的大部分数据类型,包括基本类型、数组类型、指针类型等。但在实际生活中有许多需要由不同类型的数据共同描述的实体,比如通讯录可由姓名、地址、电话、邮政编码等组成;一个学生的情况可由姓名、性别、年龄、成绩、家庭住址等数据项组成。C语言提供了这样一种数据结构,它们是结构体类型和共用体类型。8.1结构体在C语言中,基本类型数据在系统已经有系统定义好了,编程人员只要直接应用它们就可以了。但是结构体是一种构造类型,在使用该类型的数据之前必须先给出类型定义即先定
2、义后使用。8.1.1结构体类型的定义1.结构体类型的定义的一般形式为:struct结构体类型名{数据类型1成员名1;数据类型2成员名2;┋数据类型n成员名n;};结构体名的命名应该遵守标识符的命名规则。打括号内可以包含若干个成员,每个成员应有具体的数据类型。8.1结构体例如,描述日期定义的结构体类型:structdate{intyear;intmonth;intday;};其中date是结构体名,该结构体类型是由三个成员组成。成员都是整型,编者可根据自己需求编写成员,成员的数据类型可以是任何数据类型,当然也可以包含结构体类型。注意最后大括号后要加上分号“;”作为结束。8.1
3、结构体例如structstudent{charname[8];charsex[2];structdatebirthday;};结构体类型structstudent的定义中,成员birthday是结构体类型,这就形成了结构体的嵌套。结构体类型的定义完成后,我们就可以应用该结构体类型的变量,它的使用和int,float等相同,如上例中定义了structdate结构体类型,在structstudent结构体定义中用到了structdate结构体类型的变量birthday。8.1结构体8.1.2结构体变量的定义定义了结构体类型之后,就可以在此基础上定义结构体类型的变量,结构体变量的
4、定义可以采用以下三种方法:1.先定义结构体类型再定义变量,例如上面已定义了一个结构体类型structdate,可以用它来定义变量:structdatebirthday;2.在定义类型的同时定义变量上面可改写为:例如structdate{intyear;intmonth;intday;}student1,student2;即在结构体类型定义后直接写出变量名。8.1结构体3.直接定义结构体类型变量,即不定义结构体类型名,在写出结构体类型后直接写出变量名struct{intyear;intmonth;intday;}student1,student2;定义变量后,编译系统会为它分
5、配存储空间,存储空间的大小是结构体各成员变量所占内存单元的总和。结构体类型变量说明:1)类型与变量的概念不同。对结构体类型变量来说,在定义时一般先定义结构体类型,然后再定义该结构体类型的变量。只能对结构体类型的变量赋值、存取或运算,而不能对结构体类型赋值、存取或运算。在编译时对类型是不分配存储空间的,只对变量分配存储空间。8.1结构体2)对结构体变量中的成员,可以单独使用,其作用与地位相当于普通变量。3)结构体类型的成员可以是一个已定义的结构体类型变量。如结构体类型structstudent中的structdatebirthday;这样先定义了一个structdate类型,
6、它包括三个成员,然后在定义结构体类型structstudent时,成员birthday被定义为structdate类型。4)结构体类型中的成员可以与程序中的变量同名,二者不代表同一对象。8.1结构体8.1.3结构体变量的引用在定义结构体变量以后,可以引用这个变量中的成员。但是怎样引用?在C语言中一般不整体引用。对结构体变量的使用主要是对其成员的操作,引用成员的一般形式为:结构体变量名.成员名其中“.”是成员运算符,它优先级别最高,引用结构体变量应遵守以下规则:1.不能将一个结构体变量作为一个整体加以引用,只能引用结构体变量中的成员。经常把结构体变量名.成员名看作一个整体进行
7、操作。例如:student1.year=2008;student1.month=8;8.1结构体2.如果成员本身又属于一个结构体类型,则需要再次使用取成员运算符“.”,这样逐级的应用成员运算符找到最低级的成员。例如:student1.birthday.year3.对结构体类型变量的成员所能执行的操作,与具有相同类型的普通变量所能执行的操作相同,包括赋值、输入输出、运算等。例如:student1.year++;4.C语言允许两个同类型的结构体变量之间相互赋值。在执行“student2=student1;”不允许用赋值
此文档下载收益归作者所有