- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言程序设计 Lec 7 结构体 引言 复杂数据的表示 假设一个学生信息包括姓名、学号、成绩,将n个学生的信息,按成绩排序后输出 解决方法1:用三个数组分别存放姓名,学号,成绩,对成绩排序,排序中需要交换两个成绩时要同时交换对应的姓名和学号 解决方法2:将每个学生的三个信息作为一个整体,然后根据成绩排序,交换时将学生信息作为整体交换 结构体 多个信息组合成的一个逻辑整体 每个信息称为结构体的一个成员 每个成员都有类型和名称 类型可以是基本类型也可以是数组类型、结构体类型或指针类型,甚至指向当前结构体类型 主要内容 7.1 结构体定义与使用 7.2 结构体与函数 结构体类型定义 结构体类型的概念 结构体是由不同类型的数据所组成的集合体。 结构体类型的的定义:注意类型定义后面的分号 struct 结构体名 { 数据类型 成员名1; 数据类型 成员名2; … 数据类型 成员名n; }; 结构体类型示例 示例一: struct Student //学生信息结构体 { char num[10]; //学号 char name[10]; //姓名 char sex; //性别 int age; //年龄 char addr[30]; //住址 }; 结构体类型示例 示例二: struct __Date //日期结构体 { int year; int month; int day; }; 示例三: struct Complex //复数结构体 { double real; //实部 double imag; //虚部 }; 定义结构体变量 方法1:定义结构体时声明变量 定义结构体变量 方法2:在程序其他地方声明变量 定义结构体变量 方法3:先用typedef将结构体定义为一个简单名称,然后用该名称来定义变量 定义结构体变量 使用typedef重新命名结构体类型名后,结构体变量的定义格式与普通变量相同: 示例一:Date date; 示例二:Student zhang_san; 示例三:Student students[8];//学生结构体数组 结构体变量的初始化 定义结构体变量的同时可以直接设置初值。 typedef struct {int year, month, day;} Date; typedef struct //学生信息结构体 { char num[10]; //学号 char name[10]; //姓名 char sex; //性别 int age; //年龄 Date birthday; //出生年月 } Student ; Student monitor={, ”张明”, ‘M’, 19}; Student monitor={, ”张明”, ‘M’, 19,{1994,1,10}}; 结构体变量的赋值 与数组不同,结构体量可直接赋值,拷贝过程为逐成员一一复制 如果成员是基本类型,按值复制 如果成员是数组,数组内容会被复制 如果成员是指针,复制指针值(地址),导致两个结构体变量的成员指向同一块内存 示例: Date date = { 2014, 12, 26 }; Date today = date; 结构体变量成员的访问 结构体变量成员的访问 使用点号操作符“.”访问结构体变量的某个特定成员 示例一:Date date; date.year = 2014; date.month = 12; date.day = 26; 嵌套结构体成员的访问 可以连续使用点号逐层访问 示例二: Student monitor; monitor. birthday.year=1995; 复杂结构体成员的访问 严格按照语法规范进行 示例三: Student students[10]; students[0]. birthday.year=1995; 结构体指针变量 定义结构体类型的指针变量 格式:结构体类型 *指针变量名 结构体指针变量 引用结构体类型指针变量的成员 方法1:先用间接运算符(*)取得结构体,再用成员运算符(.)访问成员 方法2:直接用专用运算符-取得结构体类型指针变量的成员 示例1:编写程序,接受用户输入的两个复数,按照 a + bi 格式打印它们之和,精度精确到小数点后二位 7.2 结构体与函数 结构体类型作为函数返回值 可以返回一个逻辑整体(相当于返回多个值) 结构体类型返回值可以整体
文档评论(0)