- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章结构体与共用体 主要内容: 1.掌握结构体类型的定义方法 2.掌握结构体变量的使用方法 3.用指针处理动态链表 4.共用体的定义与使用 一.为什么要引入结构体和共用体? 有时要将不同的数据类型组合成一个整体,组合在一起的数据是相互联系的,如一个学生的信息,学号,姓名,成绩等,引入结构体。 为了节省存贮空间,用共用体,即让多个变量占同一段内存单元。 二. 定义结构体类型及变量 2、结构体变量的说明 先定义结构体类型,然后声明变量 如,struct student stu1,stu2; 定义类型的时候直接声明 ?struct 结构体名 {成员列表; }变量名列表; 直接定义结构体类型变量,而不给类型命名 说明: 1、区别类型和变量 2、结构体中的成员可以单独使用,相当于普通变量(但要注意使用方法) 3、成员也可以是结构体,即结构体可以嵌套 struct date { int month; int day; int year; } 三、结构体变量的引用 四、结构体变量的初始化 1、定义时指定初值 struct student { int no; char *name; char sex; int age; float score; char add[30]; }stu1={01,”Li Ming”,’F’,20,560,”5268 People’s Street”}; 2、用scanf进行输入 scanf(“%d%c%s%d%f%s”,stu1.no,stu1.sex,stu1.name, stu1.age,stu1.score, stu1.add); 要注意采用正确的输入方法 1 Faaa 20 89 dfadsfkd//二者中间不能有空格 五、结构体数组 如果要管理一个班的同学,这时要用到结构体数组,元素的类型为结构体类型 struct student stu[30]; 也可以在定义结构体类型的同时声明结构体数组。与其它类型数组一样,在定义的时候可以初始化,在定义数组的后面加上={初值列表}; 例,对候选人得票的统计程序 #include string.h struct person {char name[20]; int count; }leader[3]={“Li”,0,”Zhang”,0,”Fan”,0}; main() {int i,j; char leader_name[20]; for (i=0;i10;i++) { scanf(%s,leader_name); for (j=0;j3;j++) if (strcmp(leader[j].name,leader_name)==0) leader[j].count++; } for(i=0;i3;i++) printf(%5s:%d\n,leader[i].name,leader[i].count); } 六、指向结构体类型数据的指针 1、指向结构体变量的指针 struct student stu1; struct student *p; p=stu1; printf(“%d”,(*p).no); 分析以下几种运算 p-n:得到结构体变量中的成员的值 p-n++:先使用结构体变量中的成员的值,然后加1 ++p-n:先将结构体变量中的成员的值加1,然后使用 2、指向结构体数组的指针 struct student stu[10]={{},{},……,{}}; struct student *p; for (p=stu;pstu+10;p++) printf(“……”,p-no,……); 要使p指向结构体中的某一成员,可用强制类型转换 p=(struct student *)stu[0].name; printf(“%s”,p); 此时能输出成员的值,但p仍保持原来的类型。也可以执行p++操作,指向下一个元素的name成员,p的值增加了结构体的长度 3、用结构体变量和指向结构体的指针作函数参数 有三种方法: 1、用结构体变量的成员作参数,同普通变量 2、用结构体变量作参数,此时仍然是值传递,实参和形参占不同的存贮单元,浪费存贮空间,且形参的变化不影响实参 3、用指向结构体变量的指针做实参,实现地址传递 例,将学生成绩打印输出 void print( struct student stu) {print(“……”,stu.no,stu.name,……); } main() {struct student sut; print(stu); } 用指向
您可能关注的文档
最近下载
- 小学科学新教科版二年级上册第一单元 造房子教案(共6课)(2025秋).docx VIP
- 2025年广西公需科目第二套答案.docx VIP
- 设备供货配送方案.docx VIP
- 现代农业发展情况课件.ppt VIP
- 2025年广西专业技术人员继续教育公需科目(二)答案.docx VIP
- 《急诊与灾难医学》全套课件.pptx
- 精通版五年级英语上册Lesson3_教学课件.ppt VIP
- 农村公路畅通工程质量检测方案(第三方检测及交工验收).docx VIP
- 《现代农业发展》课件.ppt VIP
- 2025广西公需科目考试答案(3套涵盖95-试题)一区两地一园一通道建设人工智能时代的机遇与挑战.docx VIP
文档评论(0)