第9讲-结构体指针结构体与函数课件.ppt

上传人:飞****2 文档编号:92570368 上传时间:2023-06-08 格式:PPT 页数:15 大小:343.51KB
返回 下载 相关 举报
第9讲-结构体指针结构体与函数课件.ppt_第1页
第1页 / 共15页
第9讲-结构体指针结构体与函数课件.ppt_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《第9讲-结构体指针结构体与函数课件.ppt》由会员分享,可在线阅读,更多相关《第9讲-结构体指针结构体与函数课件.ppt(15页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、1第9讲 结构体与指针、函数本讲内容:(1)结构体类型的指针变量(2)结构体与函数27.4.1 指向结构体变量的指针1.定义struct student char name20;int age;int s1,s2;stu=Mary,19,78,86;struct student*p;p=&stu;struct 结构体名*结构体变量名Mary197886stu2010203020342038p2010结构体的地址为结构体第一个成员的地址。p=&stu.name;是否可以?不可以,类型不匹配。p=(struct student*)&stu.name;改为:37.4.1 指向结构体变量的指针2.成员

2、的引用格式(1)结构体变量名.成员名 stu.age(2)(*指针变量名).成员名(*p).age(3)指针变量名-成员名 p-age指向运算符p-age+分析:+p-age等价于(p-age)+等价于+(p-age)不等于(+p)-agep-age类型?不是指针类型struct student char name20;int age;int s1,s2;struct student stu,*p;p=&stu;gets(stu.name);(*p).age=21;p-s1=87;p-s2=90;41.定义 struct student a3,*p;7.4.2 指向结构体数组的指针2.使用fo

3、r(p=a;pname);scanf(%d%d%d,&p-age,&p-s1,&p-s2);赋初值为数组名p+表示使指针指向下一个结构体,而不是下一个成员Mary217886Alex209080Mike197568st0st1st2ppp57.4.2 指向结构体数组的指针思考:1.(+p)-age先使p加1,然后的到p-age的值先得到p-age的值,然后使p加12.(p+)-age3.+p-age4.p-age+先使p-age,然后的到p-age的值先得到p-age的值,然后使p-age加161.函数实参和形参都用结构体变量,参数之间为值传递 实参结构体变量各成员的值依次传给形参结构体变量7

4、.5.1 结构体变量作为函数参数 struct student char name20;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;nameages1s2Alex2298100nameages1s2stusssAlex22981003377.5.1 结构体变量作为函数参数例1 输入任意日期,计算该天是本年中第几天。使用函数计算天数。分析:1.日期如何表示?定义日期结构体。struc

5、t date int year;int month;int day;2.函数如何设计?函数形参(输入):日期结构体变量函数返回值(输出):天数int fun(struct date d)函数原形:87.5.1 结构体变量作为函数参数3.如何计算?如 1999.2.1231+12如 1999.3.1331+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:case 10:case 12:t=31;

6、break;case 4:case 6:case 9:case 11:t=30;break;case 2:if(d.year%4=0&d.year%100!=0|d.year%400=0)t=29;else t=28;days=days+t;97.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;计算前几个月的天数之和加上当月天数107.5.1 结构体变量作为函数参数void main()s

7、truct date d;int days;scanf(%d%d%d,&d.year,&d.month,&d.day);days=fun(d);printf(day of year is:%dn,days);struct date int year;int month;int day;输入日期传递整个日期结构体到函数定义日期结构体117.5.2 结构体指针作为函数参数2.指向结构体变量(数组)的指针做实参,将结构体变量(数组)的地址传给形参 struct student char name20;int age;int s1,s2;void main()struct student stu,*p

8、;p=&stu;aaa(p);printf(%d,stu.age);void aaa(struct student*sss)sss-age=33;Alex2298100stup100010201024102833sss1000100012例2 按成绩对学生信息进行从高到底的排序#include#define N 30struct stud int n;char name10;int s;7.5.2 结构体指针作为函数参数void sort(struct stud*p)int i,j;struct stud temp;for(i=0;iN-1;i+)for(j=i+1;js s)temp=*(p

9、+i);*(p+i)=*(p+j);*(p+j)=temp;注意进行比较的是元素sti和stj的成绩成员s,但进行交换的是元素sti和stj13void main()int i;struct stud stN;for(i=0;iN;i+)scanf(%d%s%d,&sti.n,sti.name,&sti.s);sort(st);for(i=0;iN;i+)printf(%4d%10s%4d,sti.n,sti.name,sti.s);7.5.2 结构体指针作为函数参数/传递的结构体数组名147.5.3 函数返回值为结构体类型格式:结构体类型 函数名(形参表)函数体;例3 编写函数输入结构体变量,在主函数中输出 struct student int num;char name20;float score;struct student input()struct student b;scanf(%d%s%f,&b.num,b.name,&b.score);return b;void main()struct student stu;stu=input();printf(%d,%s,%5.2fn,stu.num,stu.name,stu.score);15实验实验:P99 实验1(3)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com