ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:17.17KB ,
资源ID:8999884      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8999884.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第十一章zrr语言.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第十一章zrr语言.docx

1、第十一章zrr语言第十一章 结构体在实际问题中,一组相关数据往往具有不同的数据类型,显然不能用一个数组来存放这组数据。因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。为了解决这个问题,语言中给出了另一种构造数据类型“结构体”。它相当于其它高级语言中的记录。11.1 概述 “结构体”是一种构造数据类型, 它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。既然结构体是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。声明一个结构体的一般形式为:struct 结构体名 成员表列 ; 注意:在

2、花括号后的分号是不可少的。成员列表由若干个成员组成, 每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:类型说明符 成员名; 也可以把成员列表称为域表,每一个成员称为结构体的一个域。成员名的命名应符合标识符的命名原则。例如:struct stu int num;char name20;char sex;float score; 结构体定义之后,即可进行变量说明。凡说明为该结构体类型的变量都由该结构体的成员组成。由此可见,结构体是一种复杂的数据类型,是数目固定,类型不同的若干变量的集合。11.2 结构类型变量的定义定义结构体类型的变量有以下三种方法。以上面定义的stu为例来

3、加以说明。 先定义结构,再说明结构变量。格式为: struct 结构体名 变量名列表;例如:struct stu int num;char name20;char sex;float score;struct stu boy1,boy2; 在定义结构类型的同时说明结构变量。格式为: struct 结构体名 成员列表 变量名列表;例如:struct stu int num;char name20;char sex;float score;boy1,boy2; 直接说明结构变量。格式为:struct 成员列表 变量名列表;例如:struct int num;char name20;char sex

4、;float score;boy1,boy2; 说明:类型与变量在概念上的区别。结构体中的成员可以单独使用,类似于普通变量。结构体的成员也可以是结构体类型的变量。struct date int year;int month;int day; ;struct stu int num;char name20;char sex;float score;struct date birthday;struct stu *next;girl1,girl2;girl1.next=&girl2成员名可以与程序中其他的变量名相同。11.3 结构体变量的引用对于结构体变量的引用,要通过成员运算符“.”,逐个访问其

5、成员,其格式为:结构体变量名.成员其中的“.”是成员运算符,优先级最高,具有左结合性。引用规则为:不能把一个结构体变量作为一个整体输入或者输出,只能对它的各个成员分别进行这样的操作。例如:printf(“%d,%s,%c,%fn”,boy1.num,boy1.name,boy1.sex,boy1.score);float temp;scanf(“%f”,&temp);boy1.score=temp;如果成员本身又是一个结构体变量,则必须逐级使用成员运算符,向下找到最低级的成员才能使用它。例如:scanf(“%d,%d,%d”,&girl.birthday.year, &girl.birthda

6、y.month,&girl.birthday.day);根据成员本身的数据类型,可以对它进行各种适合的操作。例 struc1.c可以引用结构体变量或其成员的地址,多用做函数参数,传递结构体的地址。Struct2.c11.4 结构体变量的初始化结构体变量的初始化与一维数组相似,使用初值表来进行。其格式为:结构体变量名=初值表;如果某一个成员本身又是一个结构体类型的变量,那么它的初值就是一个初值表。例如:struct stu girl=100,”LiHua”,F,81,1980,6,23,*temp; temp=&girl; temp-num;11.5 结构体数组数组元素也可以是结构体类型的。 因

7、此可以构成结构体数组。结构体数组的每一个元素都是具有相同结构体类型的下标结构体变量。 在实际应用中,经常用结构体数组来表示具有相同数据结构的一个群体。 结构体数组的定义与定义结构体类型变量一样,也可以有三种方式。 结构体数组的初始化结构体数组的初始化是在定义的数组的后面加上 “=初值表”如果对全部元素都初始化的话,可以省略数组的长度。例如:struct stu int num;char name20;char sex;float score;boy5=101,Li ping,M,45,102,Zhang ping,M,62.5,103,He fang,F,92.5,104,Cheng ling

8、,F,87,105,Wang ming,M,58; 举例例1:计算学生的平均成绩和不及格的人数。Liz1.cliz2.c11.6 指向结构体类型数据的指针一个结构体变量的指针就是该变量所占据的内存空间的起始地址。 指向结构体变量的指针 定义方法struct 结构体名 *指针变量名使用方法 (*结构体指针变量).成员名结构体指针变量成员名其中 是指向运算符,具有左结合性,优先级最高,功能是得到指针变量所指向的结构体变量的成员的值。struct stu boy,*p=&boy;boy.num (*p).num p-num注意:使用前必须先令指针变量指向一个确定的结构体变量。成员运算符的优先级高于指

9、针运算符,所以第二种使用方法中的括号不能省略。 指向结构体数组的指针定义方法与定义指向普通数组的指针变量相似。使用时要注意:如果p指向数组中的某一个元素,则p+1是指向该数组中的下一个元素的,依然是一个结构体类型的变量。(p+)-num 表示先得到当前元素的num成员的值,再使p指向下一个元素。 (+p)-num 表示使p指向下一个元素,并得到它的num成员的值。定义p是指向某一个结构体变量的指针变量,则p可以指向属于该数据类型的任何变量,但不可以令p指向该变量中某一个具体的成员,因为该成员不一定是结构体类型的。见p291 做函数参数将一个结构体变量的值传递给另一个函数,可以有三种方法:用结构

10、体变量的成员做参数,使用方法与普通变量一样。用结构体变量做参数,此时形参与实参必须都是同一结构体类型的变量。用指向结构体变量的指针做参数,形参与实参必须类型一致,实参把地址传递给形参。Liz3.c117 用指针处理链表链表是一种重要的数据结构,它是动态进行存储分配的一种结构,是动态进行存储分配的一种结构。1 链表由一系列的节点构成,每个节点的数据由2部分构成,包括数据部分和指针部分分别用来存放实际数据和下一个节点的地址。2 可能会有一个头节点用来记录第一个节点的地址。1172 简单链表#define NULL 0main() struct student int num; struct stu

11、dent * next; a,b,c,*p;a.num=101;a.next=&b;b.num=102;b.next=&c;c.num=103;c.next=NULL;p=&a;while(p) printf(“%d”,p-num); p=p-next;11.7.3 处理动态链表所需要的函数malloc(unsigned size)在内存中开辟一个长度为size的存储空间,并且返回空间的起始地址,如果失败则返回NULL。calloc (unsigned n,unsigned size)在内存中开辟n个长度为size的存储空间,并且返回空间的起始地址,如果失败则返回NULL。free(*p)释放指针变量p所指向的存储空间。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1