- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结构体和共用体22
结构体和共用体 2 梁春燕 华电信息管理教研室 主要内容 链表 共用体 枚举类型 类型定义 小结 链表 链表 动态存储分配 使用结构体和指针操作链表 动态存储分配 C语言提供了一些内存管理函数,这些内存管理函数可以按需要动态地分配内存空间,也可把不再使用的空间回收待用,为有效地利用内存资源提供了手段。 分配内存空间函数malloc 功能:在内存的动态存储区中分配一块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。 原型声明: void *malloc(int size) “size”是一个无符号数 malloc函数例: char *pc; pc=(char *)malloc(100); 表示分配100个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。 (类型说明符*)表示把返回值强制转换为该类型指针。 分配内存空间函数 calloc 功能:在内存动态存储区中分配n块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。 原型声明: void * calloc(int n, int size) (类型说明符*)用于强制类型转换。 calloc函数与malloc 函数的区别仅在于一次可以分配n块区域。 calloc举例: struct stu *ps; ps=(struet stu*)calloc(2,sizeof(struct stu)); 其中的sizeof(struct stu)是求stu的结构长度。因此该语句的意思是:按stu的长度分配2块连续区域,强制转换为stu类型,并把其首地址赋予指针变量ps。 释放内存空间函数free 声明形式: free(void*ptr); 功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域。 例:分配一块区域,输入一个学生数据 main() { struct stu{ int num; char *name; char sex; float score; } *ps; ps=(struct stu*)malloc(sizeof(struct stu)); (*ps).num=102; ps-name=Zhang ping; ps-sex=M; ps-score=62.5; printf(Number=%d\nName=%s\n,ps-num,ps-name); printf(Sex=%c\nScore=%f\n,ps-sex,ps-score); free(ps); } 使用结构体和指针操作链表 链表 一种重要的数据结构; 动态地进行存储分配的结构。 链表的生成 动态存储分配 结构体 -- 结点 指针– 链接结点的地址 链表的操作 链表的建立、输出、删除、插入等。 共用体 共用体 构造数据类型,也叫联合体 用途:使几个不同类型的变量共占一段内存(相互覆盖) 共用体类型定义 定义形式: 结构体与共用体 枚举类型 枚举类型 枚举类型:变量只有几种可能的值。 枚举类型定义 定义形式: 类型定义 typedef定义类型步骤 按定义变量方法先写出定义体 如 int i; 将变量名换成新类型名 如 int INTEGER; 最前面加typedef 如 typedef int INTEGER; 用新类型名定义变量 如 INTEGER i,j; 小结 小结 动态存储分配; 使用结构体和指针操作链表; 共用体变量的定义和引用:union 枚举类型的定义和使用:enum 用 typedef 定义类型的方法。 END * * union 共用体名 { 类型标识符 成员名; 类型标识符 成员名; ……………. }; 例 union data { int i; char ch; float f; }; f ch i 类型定义不分配内存 形式一: union data { int i;
您可能关注的文档
- 第二节常见地几种酸.ppt
- 第二节工业的域的形成.ppt
- 第二节社会主义建设的确的理论原则与经验总结.ppt
- 第二节词的分类与构造(修改版 上课用).ppt
- 第二讲 物权法地基本原则.ppt
- 第二讲 唯物史观地发现(上下).ppt
- 第二讲 中国饮文化特性.ppt
- 第二讲(经典)-在的图上辨认的面的高低起伏.ppt
- 第二讲学习需要与教问题分析.ppt
- 第二辑隋代至明代——参考文章(页1)1.doc
- DevOps工程师-容器化与虚拟化-Kubernetes_Kubernetes服务网格与网络策略.docx
- DevOps工程师-容器化与虚拟化-Vagrant_Vagrant与虚拟化软件集成.docx
- DevOps工程师-容器化与虚拟化-Docker Compose_网络与服务间通信.docx
- DevOps工程师-容器化与虚拟化-Vagrant_Vagrantfile配置详解.docx
- DevOps工程师-容器化与虚拟化-Docker_Docker网络与端口映射.docx
- DevOps工程师-容器化与虚拟化-Docker_Docker容器化微服务架构.docx
- DevOps工程师-持续集成与持续部署-GitLab CI_GitLabCI与DevOps文化.docx
- DevOps工程师-监控与日志-ELK Stack_ELKStack数据生命周期管理.docx
- DevOps工程师-持续集成与持续部署-持续集成与持续部署最佳实践_持续集成与持续部署概论.docx
- DevOps工程师-持续集成与持续部署-Travis CI_TravisCI的社区资源与支持.docx
文档评论(0)