C语言09章-0912.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.1 定义和使用结构变量 有时候需要将不同类型的数据组合成一个有机的整体,这些组合在一个整体中的数据是互相联系的。 例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。 显然不能用一个数组来存放这一组数据。 为了解决这个问题,C语言中给出了另一种构造数据类型——“结构(structure)”或叫“结构体”。 它相当于其它高级语言中的记录。“结构”是一种构造类型,它是由若干“成员”组成的。结构既是一种“构造”而成的数据类型,那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义函数一样。 9.1.1 结构体类型的定义 9.1.2 结构体变量的定义 9.1.3 结构体变量的初始化 和其他类型变量一样,对结构变量可以在定义时进行初始化赋值。 【例9.1】对结构体变量初始化。 void main() { struct student /*定义结构体*/ { int num; char *name; char sex; float score; } boy2,boy1={102,Zhang ping,M,78.5}; boy2=boy1; printf(“Num=%d,Name=%s\n,boy2.num,boy2.name); printf(“Sex=%c,Score=%f\n,boy2.sex,boy2.score);} 上例中,boy2,boy1均被定义为外部结构变量,并对boy1作了初始化赋值。在main函数中,把boy1的值整体赋予boy2,然后用两个printf语句输出boy2各成员的值。 9.2 结构数组 数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。 如一个班的学生档案,一个车间职工的工资表等。方法和结构变量相似,只需说明它为数组类型即可。 9.3 结构体指针 一个指针变量当用来指向一个结构变量时,称之为结构指针变量。结构指针变量中的值是所指向的结构变量的首地址。通过结构指针即可访问该结构变量,这与数组指针和函数指针的情况是相同的。 结构指针变量说明的一般形式为: struct 结构名 *结构指针变量名 如:struct student *p; 结构指针变量访问的一般形式为: (*结构指针变量).成员名 或为: 结构指针变量-成员名 例如定义: struct student { int num; char *name; char sex; float score; }; struct student stu,*p; p=stu; 则访问形式为: (*p).num 或 p-num (*p).name 或 p-name 9.4 用结构体变量和结构体指针作函数参数 一. 用结构体变量作函数参数 例如: void output(student x) { printf(“%d%s”, x.num,x.name); } void main() { student a={1001, “Li Ming”}; output (a); } 二. 用结构体指针作函数参数 【例9.4】计算一组学生的平均成绩(用结构指针变量作函数参数编程)。 9.5 用指针处理链表 一、动态存储分配 在数组一章中,曾介绍过数组的长度是预先定义好的,在整个程序中固定不变。C语言中不允许动态数组类型。 例如:int n; scanf(%d,n); int a[n]; 用变量表示长度,想对数组的大小作动态说明,这是错误的。 但是在实际的编程中,往往会发生这种情况,即所需的内存 空间取决于实际输入的数据,而无法预先确定。对于这种问 题,用数组的办法很难解决。为了解决上述问题,C语言提 供了一些内存管理函数,这些内存管理函数可以按需要动态 地分配内存空间,也可把不再使用的空间回收待用,为有效 地利用内存资源提供了手段。 常用的内存管理函数有以下三个: 1. 分配内存空间函数malloc 调用形式: (类型说明符*)malloc(size) 功能:在内存的动态存储区中分配一块长度

文档评论(0)

wxc6688 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档