- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章复杂数据结构——结构体及用户自定义类型
C语言程序设计 - 第1章 C语言学习基础 第7章 复杂数据结构——结构体、联合及用户自定义模型 本章教学目标 掌握定义结构体类型、结构体变量、数组和结构体指针的方法。 掌握初始化结构体变量、结构体数组的方法。 掌握结构体成员的引用方法。 应用结构体变量、数组和指针 掌握结构体在函数中的使用 掌握链表的概念 本章内容 7.1 结构及结构变量的引入 7.2 结构数组和结构指针 7.3 结构体与函数 7.4 链表 7.6 用typedef定义数据类型 7.1 结构(Structure)变量的引入 7.1.1 结构体类型(Structure type )的定义 结构体类型定义的一般形式: struct 结构体类型名 { 类型名1 结构成员名表1; 类型名2 结构成员名表2; …… 类型名n 结构成员名表n; }; 7.1.2 结构体变量 学生结构体变量的定义和初始化。 struct student { char classname[20]; /*班级编号*/ char studentid[20]; /*学生学号*/ char studentname[N]; /*学生姓名*/ struct date { int year,month,int day; }birthday; /*出生日期*/ int scorearr[N]; /*学生成绩数组*/ }student1={11,200901,张华,1990,10,30,65,83,71,86,76}; 2.结构体变量的存储 结构体变量占用一片地址连续的存储单元,各成员按其定义的顺序依次存放连续的存储单元中。 7.1.3 结构体变量的使用 1.整体使用整个结构变量 结构成员引用的形式为: 结构体类型变量名.成员名 访问嵌套结构体成员变量,连续使用点运算符 每个结构成员名从最外层直到最内层逐个被列出。嵌套式结构成员的表达方式是: 结构变量名.嵌套结构变量名.结构成员名 3. 对结构变量的输入、输出和计算 7.2结构数组(structural array)和结构指针 7.2.1 结构数组的定义和初始化 7.2.2 指向结构体变量的指针 7.2.3 结构数组的使用 7.2.4 指向结构体数组的指针 struct { char name[8]; char sex[4]; int age; char addr[40]; }student[40]; struct Person { char name[20]; /*职工姓名*/ unsigned long id; /*职工编号*/ float salary; /*职工薪金*/ }; /*定义并初始化一个Person类型的数组*/ struct Person allone[6]={ {jone, 12345, 339.0}, {“david”, 13916, 449.0}, {marit, 27519, 311.0}, {jasen, 42876, 623.0}, {peter, 23987, 400.0}, {yoke, 12335, 511.0} }; 7.2.2指向结构体变量的指针 结构指针是指向结构体变量的指针。由一个加在结构变量名前的“*”操作符来定义。 通过结构指针访问结构成员的方式: 结构指针变量名-结构成员 或: (*结构指针变量名).结构成员 7.2.3 结构数组的使用 结构数组元素是结构变量,访问结构数组元素中的成员,方法与简单结构变量类似。 访问结构数组元素成员形式为: 结构数组元素.成员名 即: 结构数组名[下标].成员名 7.2.4 指向结构体数组的指针 7.3 结构体与函数 7.3.1 结构体变量作为函数参数 7.3.2 结构体指针变量作函数参数 7.3.1 结构体与函数 ANSI C允许用整个结构体作为函数的参数传递,但是必须保证实参与形参的类型相同。 结构体变量作为函数参数,同时传递各个成员值到其它函数。 如果结构体类型中的成员很多,或有一些成员是数组,则程序运行效率会大大降低。 7.3.2 结构体指针变量作函数参数 用结构变量作函数参数进行整体传送。 将全部成员逐个传送,特别是成员为数组时将会使传送的时间和空间开销很大,严重地降低了程序的效率。 使用结构指针变量作函数参数进行传送。 由实参传给形参的只是地址,从而减
文档评论(0)