第8章用户定义类型.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章用户定义类型

第八章 用户定义类型 §8-1 结构体 §8-2 联合体 §8-3 枚举 §8-4 类型定义 8.1.1 结构(类型)的定义 结构(类型)的定义是对结构体的描述,结构的定义并不引起系统为该结构分配内存空间,只是制定了结构使用的内存模式。 定义形式 struct 结构类型名 { 数据类型 成员名1; 数据类型 成员名2; …… 数据类型 成员名n; }; 8.1.2 结构变量 说明 [存储类型] struct 结构类型名 结构变量名; 8.1.2 结构变量 8.1.2 结构变量 成员的引用 结构变量名.成员名 初始化 struct student a={1,”Mary”,20,90,” ……”}; 输入输出 不允许直接输入输出 scanf(“%d%s%d%f%s”,a.num,a.name,a.age, a.score,a.address); printf(“no:%d,name:%s,age:%d,score:%f,\naddress:%s”,a.num,a.name,a.age,a.score,a.address); 8.1.2 结构变量 结构的嵌套 结构体可以嵌套,即成员可以是另一结构的变量 结构体嵌套,只能对最低一级成员进行赋值、输入输出等运算 8.1.2 结构变量 8.1.2 结构变量 注意: (1)?结构 类型与结构变量是不同的概念; (2)结构体成员的使用与普通变量相同,可单独使用; (3)成员名可以与程序变量名相同,但二者代表不同对象 int num; struct student{ int num;......}; (4)嵌套的数据成员,只有到最后一层才能进行各种操作 8.1.3 结构数组 说明: 存储类型 struct 结构类型名 结构数组名[元素个数]; struct student class9705[40]; 初始化: struct student class9705[40]={{…},{…},…{…}}; 输入输出: for(i=0;i40;i++) scanf(“%d%s%d%f%s”,class9705[i].num, class9705[i].name,class9705[i].age, class9705[i].score,class9705[i].address); 8.1.3 结构数组 8.1.4 结构指针 结构指针—指向结构体的指针,保存结构体的存储区首地址 说明形式: 存储类型 struct 结构名 *结构指针名; struct student *pstu; 赋值: struct student class9705[40],a,*pstu; pstu=class9705; /*pstu=a;*/ 引用: (*结构指针名).成员名(*pstu).num 结构指针名-成员名 pstu-num . -同属第一优先级 *属第二优先级 初始化 struct student *pstu=class9705; pstu++; 相当于加一个结构类型的长度 8.1.5 结构体与函数 8.1.5.1 利用参数传递结构体 结构变量在函数间的传递 数据复制 单向传递,调用函数-被调用函数 形参为结构体变量,实参为结构体变量 地址传递 双向传递 形参为结构体指针,实参为地址 表面上为数据复制,即形参和实参均为结构体变量,但结构体的成员为指针,则实际完成的地址传递 数据复制 地址传递(1) 地址传递(2) 8.1.5 结构体与函数 2、 结构数组在函数间的传递数据复制 双向传递 形参为结构指针或结构数组,实参为地址 8.1.5 结构体与函数 四十个学生,要求找出成绩最高者的姓名和成绩 struct student{ int num; char name[12]; float score; }; main() { struct student stu[40],*p; int i, max(struct student *,int); for(i=0;i40;i++) scanf(%d%s%f,stu[i].num,stu[i].name,stu[i].score); i=max(stu,40); printf(No:%d\nname:%s\nscore:%f\n,stu[

文档评论(0)

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

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

1亿VIP精品文档

相关文档