08-结构体与共用体-2要点.pptVIP

  1. 1、本文档共15页,可阅读全部内容。
  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文档。上传文档
查看更多
08-结构体与共用体-2要点

中国商业出版社 C语言程序设计项目教程 主编:康玉忠、甘宏、段传林 副主编:扶卿妮、樊红珍、李彬 中国商业出版社 结构体指针与指针链表 所谓结构体指针就是指向结构体数据类型的指针,一个结构体变量的起始地址就是这个结构体变量的指针。同样,如果把结构体起始地址放入一个地址变量中,那么该指针(地址变量)就是指向该结构体的变量。需要注意的是结构体指针定义类型必须与要指向的结构体变量的类型相同。 例:用结构体指针对年龄在19岁以下(含19岁)同学的成绩增加10分。 #includestdio.h struct student { int num; char name[20]; char sex; int age; float score; }; 结构体指针与指针链表 struct student stu[4]={{11301,Zhang Ping,F,19,496.5}, {11302,Wang Li,F,20,483}, {11303,Liu Hong,M,19,503}, {11304,Song Rui,M,19,471.5}}; main() { struct student *ps; ps=(stu[0]); for(;psstu+4;ps++) { if(ps-age=19) ps-score+=10; printf(%s,%d,%5.1f\n,ps-name,ps-age,ps-score); } } 用指针处理链表 链表是一种常见的重要的数据结构,它是动态地进行存储分配的一种结构。 用数组存放数据时,必须事先定义固定的长度(即元素个数)。比如,有的班级有100人,而有的班只有30人,如果要用同一个数组先后存放不同的班级的学生数据,则必须定义长度最大为100的数组。显然这将会浪费内存。 链表没有这种缺点,它根据需要开辟内存单元。下图表示最简单的一种链表(单向链表)的结构: 地址 值 地址 值 地址 值 空 头指针 用指针处理链表 链表有一个“头指针”变量,它存放一个地址,该地址指向一个元素。链表中每一个元素称为“结点”,每个结点包括两个部分:一为用户需要用的实际数据值,二为下一个结点的地址。即头指针指向第一个元素;第一个元素又指向第二个元素……直到最后一个元素,该元素不再指向其他元素,它称为“表尾”,它的地址部分放一个“NULL”(表示空地址),链表至此结束。 这种链表的数据结构,必须利用指针变量才能实现。用结构体变量作为链表中的结点最合适。 用指针处理链表 #includestdio.h #define NULL 0 //常量定义 struct student { long num; float score; struct student *next; }; main() { struct student a,b,c,*head,*p; a.num=99101;a.score=89.5; b.num=99103;b.score=90; c.num=99107;c.score=85; head=a; a.next=b; b.next=c; c.next=NULL; p=head; do { printf(%ld %5.1f\n,p-num,p-score); p=p-next; }while(p!=NULL); } 例:建立一个简单链表,它由3个学生数据的结点组成。输出各结点中的数据。 用指针处理链表 上例比较简单,所有结点都是在程序中定义的,不是临时开辟的,也不能用完后释放,这种链表称为“静态链表”。 链表结构是动态地分配存储的,即在需要时才开辟一个结点的存储单元。这种链表称为“动态链表”。 C语言编译系统的库函数提供了动态开辟和释放存储单元的有关函数。使用这些函数要进行预处理 #include malloc.h 用指针处理链表 1.malloc函数 函数原型: void *malloc(unsigned int size); 作用:在内存的动态存储区中分配一个长度为size的连续空间。返回值是一个指向分配域起始地址的指针;如果未能成功执行,则返回空指针(NULL)。 2.calloc函数 函数原型: void *calloc(unsigned n, unsigned size); 作用:在内存的动态存储区中分配n个长度为size的连续空

文档评论(0)

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

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

1亿VIP精品文档

相关文档