结构体和共用体2.pptVIP

  • 4
  • 0
  • 约4.4千字
  • 约 26页
  • 2017-03-10 发布于天津
  • 举报
结构体和共用体2.ppt

结构体和共用体 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; char ch; float f; a,b; 形式二: union data int i; char ch; float f; ; union data a,b,c,*p,d[3]; 形式三: union int i; char ch; float f; a,b,c; f ch i f ch i a b 共用体变量定义分配内存, 长度 最长成员所占字节数 共用体变量任何时刻 只有一个成员存在 共用体变量的定义 引用方式: 例 a.i 1; a.ch ‘a’; a.f 1.5; printf “%d”,a.i ; ?编译通过,运行结果不对 引用规则 不能引用共用体变量

文档评论(0)

1亿VIP精品文档

相关文档