网站大量收购独家精品文档,联系QQ:2885784924

第9章结构体和共用体[链表].pptVIP

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章结构体和共用体[链表]

第九章 结构体与链表;内容提要;;结构体类型的定义;结构体类型的定义;如考虑10门课程成绩, 加上总成绩与平均成绩,可作如下定义: ;定义结构体类型,描述下列数据 (2)个人数据: 包含姓名、性别、年龄、身高、体重、住址:;(3)日期结构体类型包括年、月、日: struct date {int year; /*年*/ month; /*月*/ day; /*日*/ };;结构体类型变量的定义(1);结构体类型变量的定义(2);结构体类型变量的定义(3);;结构体变量的使用(1);结构体变量的初始化(1);结构体变量的初始化(2);结构体变量的初始化(3);例 9.1 求某同学上学期8门课程的总成绩与平均成绩。 ;;结构体变量的输入与输出;由于变量stud包含两个字符串数据和一个长整型数据,因此输出stud变量,应该使用如下方式: printf(“%s,%s,%ld\n”,stud.name,stud.addr,stud.num); 输入stud变量的各成员值,则用: scanf(“%s%s%ld”,stud.name,stud.addr,stud.num);;;结构体类型数组;结构体数组初始化与引用;引用结构体数组元素有如下规则: (1)引用某一元素的一个成员。students[i].num (2)可以将一个结构体数组元素赋给同一结构体类型数组中的另一个元素,或赋给同一类型的变量。例如: struct student students[3],student1; Student1=students[0]; Students[2]=students[1]; Students[1]=student1; (3)不能把结构体数组元素作为一个整体直接进行输入或输出,只能以单个成员对象进行输入输出。 Scanf(“%s”,students[0].name); Printf(“%ld”,students[0].num);;;指向结构体类型数据的指针 ;指向结构体变量的指针 ;总结:结构体成员变量引用方式; p-n得到p指向的结构体变量中的成员n的值。 p-n++ 得到p指向的结构体变量中的成员n的值,用完该值后使它加1。 ++p-n 得到p指向的结构体变量中的成员n的值加1,然后再使用它。;指向结构体数组的指针;程序分析: p是指向struct student结构体类型数据的指针变量。在for语句中先使p的初值为stu,也就是数组stu第一个元素的起始地址。在第一次循环中输出stu[0]的各个成员值。然后执行p++,使p自加1。p加1意味着p所增加的值为结构体数组stu的一个元素所占的字节数。执行p++后p的值等于stu +1,p指向stu[1]。在第二次循环中输出stu[1]的各成员值。在执行p++后,p的值等于stu+2,再输出stu [2]的各成员值。在执行p++后,p的值变为stu +3, 已不再小于stu+3了,不再执行循环。 ;注意: (1) 如果p的初值为stu,即指向第一个元素,则p加1后p就指向下一个元素。例如: (++p)-num 先使p自加1,然后得到它指向的元素中的num成员值(即10102)。 (p++)-num 先得到p-num的值(即10101),然后使p自加1,指向stu[1]。 请注意以上二者的不同。 ;注意: (2) 程序已定义了p是一个指向struct student类型数据的指针变量,它用来指向一个struct student类型的数据,不应用来指向stu数组元素中的某一成员。 例如: p=stu[1].name; 如果要将某一成员的地址赋给p,可以用强制类型转换,先将成员的地址转换成p的类型。 例如:p=(struct student *)stu[0].name; ;结构体变量作为函数参数 ;struct data { int a, b, c; }; main() { void func(struct data); struct data arg; arg.a=27; arg.b=3; arg.c=arg.a+arg.b; printf(arg.a=%d arg.b=%d arg.c=%d\n,arg.a,arg.b,arg.c); printf(Call Func()....\n); func(arg); printf(arg.a=%d arg.b=%d arg.c=%d\n,arg.a,arg.b,arg.c); } void func(struct data parm) { printf(parm.a=%d parm.b=%d parm.c=%d\n,parm.a,par

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档