第6讲 结构体.pptVIP

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

* * * * * * * * * 一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。 5.5 指向结构体变量的指针 * #include iostream #include string using namespace std; int main( ) { struct Student { int num; string name; char sex; float score; }; Student stu; Student *p=stu; stu.num=10301; stu.name=Wang Fun; stu.sex=f; stu.score=89.5; coutstu. num stu.name stu.sex stu.scoreendl; cout(*p).num (*p).name (*p).sex (*p).score endl; return 0; } 1. 通过指向结构体变量的指针引用结构体变量中的成员 5.5 指向结构体变量的指针 * 程序运行结果如下: 10301 Wang Fun f 89.5 (通过结构体变量名引用成员) 10301 Wang Fun f 89.5 (通过指针引用结构体变量中的成员) 为了使用方便和使之直观,C++提供了指向结构体变量的运算符-,例如p-num表示指针p当前指向的结构体变量中的成员num。p-num 和(*p).num等价 5.5 指向结构体变量的指针 * ① 结构体变量.成员名。如stu.num。 ② (*p).成员名。如(*p).num。 ③ p-成员名。如p-num。“-”称为指向运算符。 5.5 指向结构体变量的指针 p-n p-n++ ++p-n 三种形式等价 请分析以下几种运算: 得到p指向的结构体变量中的成员n的值。 p指向的结构体变量中的成员n的值,用完该值后使它加1。 p指向的结构体变量中的成员n的值,并使之加1,然后再使用它。 * 链表是一种常见的重要的数据结构,最简单单向链表结构: 2. 用结构体变量和指向结构体变量的指针构成链表 链表有一个“头指针”变量,图中以head表示,它存放一个地址。该地址指向一个元素。链表中的每一个元素称为“结点”,每个结点都应包括两个部分: 一是用户需要用的实际数据,二是下一个结点的地址。 5.5 指向结构体变量的指针 * 链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。可利用结构体变量和指针来实现。 struct Student { int num; //实际数据1 float score; //实际数据2 Student *next; //存放下一结点地址的指针变量 }; 5.5 指向结构体变量的指针 * 每一个结点都属于Student类型,在它的成员next中存放下一个结点的地址,程序设计者不必知道各结点的具体地址,只要保证能将下一个结点的地址放到前一结点的成员next中即可。 5.5 指向结构体变量的指针 * #define NULL 0 #include iostream using namespace std; struct Student { long num; float score; Student *next; }; int main( ) { Student a,b,c,*head,*p; a. num=31001; a.score=89.5; b. num=31003; b.score=90; c. num=31007; c.score=85; 5.5 指向结构体变量的指针 * head=a; //将结点a的起始地址赋给头指针head a.next=b; //将结点b的起始地址赋给a结点的next成员 b.next=c; c.next=NULL; //结点的next成员不存放其他结点地址 p=head; //使p指针指向a结点 do { coutp-num p-scoreendl; p=p-next; //使p指向下一个结点 } while(p!=NULL); //输出完c结点后p的值为NULL return 0; } 5

文档评论(0)

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

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档