欢迎来到天天文库
浏览记录
ID:44963046
大小:343.50 KB
页数:15页
时间:2019-11-06
《第9讲 结构体指针、结构体与函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第9讲结构体与指针、函数本讲内容:(1)结构体类型的指针变量(2)结构体与函数7.4.1指向结构体变量的指针1.定义structstudent{charname[20];intage;ints1,s2;}stu={"Mary",19,78,86};structstudent*p;p=&stu;struct结构体名*结构体变量名Mary197886stu2010203020342038p2010结构体的地址为结构体第一个成员的地址。p=&stu.name;是否可以?不可以,类型不匹配。p=(structstudent*)&stu.name;改为:
2、7.4.1指向结构体变量的指针2.成员的引用格式(1)结构体变量名.成员名stu.age(2)(*指针变量名).成员名(*p).age(3)指针变量名->成员名p->age指向运算符p->age++分析:++p->age等价于(p->age)++等价于++(p->age)不等于(++p)->agep->age类型?不是指针类型structstudent{charname[20];intage;ints1,s2;};structstudentstu,*p;p=&stu;gets(stu.name);(*p).age=21;p->s1=87;p->
3、s2=90;1.定义structstudenta[3],*p;7.4.2指向结构体数组的指针2.使用for(p=a;pname);scanf("%d%d%d",&p->age,&p->s1,&p->s2);}赋初值为数组名p++表示使指针指向下一个结构体,而不是下一个成员Mary217886Alex209080Mike197568st[0]st[1]st[2]pp'p''7.4.2指向结构体数组的指针思考:1.(++p)->age先使p加1,然后的到p->age的值先得到p->age的值,然后使p加12.(p
4、++)->age3.++p->age4.p->age++先使p->age,然后的到p->age的值先得到p->age的值,然后使p->age加11.函数实参和形参都用结构体变量,参数之间为值传递实参结构体变量各成员的值依次传给形参结构体变量7.5.1结构体变量作为函数参数structstudent{charname[20];intage;ints1,s2;};voidmain(){structstudentstu={"Alex",22,98,100};aaa(stu);printf("%d",stu.age);}voidaaa(structst
5、udentsss){sss.age=33;}nameages1s2Alex2298100nameages1s2stusssAlex2298100337.5.1结构体变量作为函数参数例1输入任意日期,计算该天是本年中第几天。使用函数计算天数。分析:1.日期如何表示?定义日期结构体。structdate{intyear;intmonth;intday;};2.函数如何设计?函数形参(输入):日期结构体变量函数返回值(输出):天数intfun(structdated)函数原形:7.5.1结构体变量作为函数参数3.如何计算?如1999.2.1231+1
6、2如1999.3.1331+28+13如2000.3.1331+29+13天数=前几个月份天数之和+当月第几天考虑闰年如何计算前几个月天数之和?for(i=1;i7、8、d.year%400==0)t=29;elset=28;}days=days+t;}9、7.5.1结构体变量作为函数参数intfun(structdated){intdays=0,i,t;for(i=1;i10、ays);}structdate{intyear;intmonth;intday;};输入日期传递整个日期结构体到函数定义日期结构体7.5.2结构体指
7、
8、d.year%400==0)t=29;elset=28;}days=days+t;}
9、7.5.1结构体变量作为函数参数intfun(structdated){intdays=0,i,t;for(i=1;i10、ays);}structdate{intyear;intmonth;intday;};输入日期传递整个日期结构体到函数定义日期结构体7.5.2结构体指
10、ays);}structdate{intyear;intmonth;intday;};输入日期传递整个日期结构体到函数定义日期结构体7.5.2结构体指
此文档下载收益归作者所有