- 1、本文档共62页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[其它]免费C语言chap11
第十一章 结构体与共用体 11.1(9.1) 概述 结构体是一种构造数据类型 用途:把不同类型的数据组合成一个整体-自定义数据类型 结构体类型定义 11.2 定义结构体变量的方法 先声明结构体类型,再定义结构体变量 一般形式: 定义结构体类型的同时定义结构体变量 一般形式: 11.3 结构体变量的引用 引用规则 结构体变量不能整体引用,只能引用变量成员。 11.4 结构体变量的初始化 形式一: 11.5(9.2)结构体数组 结构体数组的定义 三种形式: 结构体数组初始化 结构体数组初始化 11.6 指向结构体类型数据的指针 指向结构体变量的指针 定义形式:struct 结构体名 *结构体指针名; 例 struct student *p; 指向结构体数组的指针 说明 (1)区别 (++p)-num (p++)-num ++p-num p-num++ (2)p指向struct student类型数据,语句p=stu[1].name是错的,地址类型不匹配。 用指向结构体的指针作函数参数 用结构体变量的成员作参数--值传递 用指向结构体变量或数组的指针作参数--地址传递 用结构体变量作参数--多值传递,效率低 链表结构是动态地分配存储的,即在需要时才开辟一个结点的存储单元。怎样动态地开辟和释放存储单元呢?C语言编译系统的库函数提供了以下有关函数。 1.malloc函数 void *malloc(unsigned int size); 其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的值(即“返回值”)是一个指向分配域起始地址的指针(基类型为void)。如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)。 2.calloc函数 其函数原型为 void *calloc(unsigned n,unsigned size); 其作用是在内存的动态区存储中分配n个长度为size的连续空间。函数返回一个指向分配域起始地址的指针;如果分配不成功,返回NULL。 用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为size。 3.free函数 其函数原型为 void free(void *p); 其作用是释放由p指向的内存区,使这部分内存区能被其他变量使用。p是调用calloc或malloc函数时返回的值。free函数无返回值。 例: 写一函数建立一个有3名学生数据的单向动态链表。 建立链表的函数可以如下: #define NULL 0 #define LEN sizeof(struct student) struct student { long num; float score; struct student *next; }; int n; /*n为全局变量,本模块中各函数均可使用它*/ struct student *creat(void) /*此函数带回一个指向链表头的指针*/ { struct student*head; struct student*p1,*p2; n=0; p1=p2=( struct student*) malloc(LEN); /*开辟一个新单元*/ scanf(%ld,%f,p1->num,p1->score); head=NULL; while(p1->num!=0) { n=n+1; if(n==1) head=p1; else p2->next=p1; p2=p1; p1=(struct student *)malloc(LEN); scanf(%ld,%f,p1->num,p1->score); } p2->next=NULL; return(head); } 11.8 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 共用体类型定义 定义形式: typedef定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j; 11.7.3 处理动态链表所需的函数 11.
您可能关注的文档
最近下载
- 委托指导股票买卖协议书范本5篇.docx
- 2024年营养指导员技能竞赛理论知识考试题库500题(含答案).docx
- 酒店消防安全管理制度11.doc VIP
- 程家惠《洋话汉音》(升级版).doc
- 青岛版科学五年级上册第一单元《光》大单元教学设计.docx
- 第4课《古代诗歌四首——天净沙.秋思》说课课件 2024—2025学年统编版语文七年级上册.pptx VIP
- 保健刮痧师保健刮痧师(高级)考点巩固.pdf VIP
- 04大医传承二(1-32讲).doc
- Unit4NaturalDisasters词汇讲解课件高中英语人教版.pptx
- 保健刮痧师《保健刮痧师》高级题库考点(模拟卷).doc VIP
文档评论(0)