版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第9讲 结构体与指针、函数,本讲内容: (1)结构体类型的指针变量 (2)结构体与函数,7.4.1 指向结构体变量的指针,1. 定义,struct student char name20 ; int age ; int s1 , s2 ; stu = Mary, 19, 78, 86; struct student *p ; p = ,struct 结构体名 * 结构体变量名,stu,2010,结构体的地址为结构体第一个成员的地址。,p = ,是否可以?,不可以,类型不匹配。,p = (struct student *),改为:,7.4.1 指向结构体变量的指针,2. 成员的引用格式 (1)
2、结构体变量名. 成员名 stu . age,(2) (*指针变量名) . 成员名 (*p) . age,(3) 指针变量名 - 成员名 p-age,指向运算符,p-age+,分析:,+p-age,等价于(p-age)+,等价于+(p-age),不等于(+p)-age,p - age类型?,不是指针类型,struct student char name20 ; int age ; int s1 , s2 ; ; struct student stu, *p ; p = ,1. 定义 struct student a3 , *p ;,7.4.2 指向结构体数组的指针,2. 使用,for ( p=a
3、 ; pname ) ; scanf( %d%d%d , ,赋初值为数组名,p+表示使指针指向下一个结构体,而不是下一个成员,7.4.2 指向结构体数组的指针,思考:,1. (+p)-age,先使p加1,然后的到p-age的值,先得到p-age的值,然后使p加1,2. (p+)-age,3. +p-age,4. p-age+,先使p-age,然后的到p-age的值,先得到p-age的值,然后使p-age加1,1. 函数实参和形参都用结构体变量 , 参数之间为值传递 实参结构体变量各成员的值依次传给形参结构体变量,7.5.1 结构体变量作为函数参数,struct student char nam
4、e20 ; int age ; int s1 , s2 ; ; void main() struct student stu=Alex, 22, 98, 100; aaa(stu); printf(%d, stu.age); void aaa(struct student sss) sss.age = 33; ,name age s1 s2,name age s1 s2,stu,sss,33,7.5.1 结构体变量作为函数参数,例1 输入任意日期,计算该天是本年中第几天。使用函数计算天数。,分析:,1. 日期如何表示?,定义日期结构体。,struct date int year; int mo
5、nth; int day; ;,2. 函数如何设计?,函数形参(输入):,日期结构体变量,函数返回值(输出):,天数,int fun( struct date d),函数原形:,7.5.1 结构体变量作为函数参数,3. 如何计算?,如 1999.2.12,31 + 12,如 1999.3.13,31 + 28 + 13,如 2000.3.13,31 + 29 + 13,天数 = 前几个月份天数之和 + 当月第几天,考虑闰年,如何计算前几个月天数之和?,for (i=1;id.month;i+) switch (i) case 1: case 3: case 5: case 7: case 8:
6、 case 10: case 12: t = 31; break;,case 4: case 6: case 9: case 11: t = 30;break; case 2: if (d.year%4=0 ,7.5.1 结构体变量作为函数参数,int fun(struct date d) int days = 0, i, t; for (i=1;id.month;i+) switch (i) case 1: days=days+t; days=days+d.day; return days; ,7.5.1 结构体变量作为函数参数,void main() struct date d; int
7、days; scanf(%d%d%d, ,struct date int year; int month; int day; ;,输入日期,传递整个日期结构体到函数,定义日期结构体,7.5.2 结构体指针作为函数参数,2. 指向结构体变量(数组)的指针做实参,将结构体变量(数组)的地址传给形参,struct student char name20 ; int age ; int s1 , s2 ; ; void main() struct student stu, *p; p = ,stu,33,1000,1000,例2 按成绩对学生信息进行从高到底的排序,#include #define N
8、 30 struct stud int n ; char name10 ; int s ; ;,7.5.2 结构体指针作为函数参数,void sort(struct stud *p ) int i , j ; struct stud temp; for ( i=0 ; is s ) temp=*(p+i) ; *(p+i) = *(p+j); *(p+j)=temp ; ,注意进行比较的是元素sti和stj的成绩成员s, 但进行交换的是元素sti和stj,void main( ) int i; struct stud stN; for ( i=0 ; iN ; i+) scanf(%d %s %d, ,7.5.2 结构体指针作为函数参数,/ 传递的结构体数组名,7.5.3 函数返回值为结构体类型,格式:,结构体类型 函数名(形参表) 函数体;,例3 编写函数输入结构体变量,在主函数中输出,struct student int num ; char name20 ; float score; ; struct student input() struct student b; scanf(%d%s%f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手术室护理配合的法律问题
- 护理服务:社区护理与居家护理
- 宫颈环扎术术后心理支持
- 护理专业护理微生物学与免疫学教学课件
- 2026缺乏物流面试题及答案
- 2026年高二语文高二学业水平模拟模拟试卷(重庆专用版·易错题诊断卷含参考答案解析与作文范文)
- 2026社工初心面试题目及答案
- 2026食物中毒遴选面试题及答案
- 2026统计与测量面试题及答案
- 可编程控制器技术应用课件 5 顺序功能图
- T-CBIA 010-2024 营养素饮料标准
- 2024年广东省普通高中学业水平合格性地理试卷(1月份)
- 思念混声合唱简谱
- x射线晶体衍射测定蛋白质三维结构
- 投资回报模型构建及应用
- 肌筋膜触发点及肌筋膜疼痛综合征 完整版
- 23S519 小型排水构筑物
- 第三单元大单元复习 统编版高中语文必修下册
- 矿浆输送及计算课件
- 宁德市国企招聘考试真题及答案
- 项目管理服务收费标准6734
评论
0/150
提交评论