8.6动态内存分配与指向它的指针变量(课件)-《 C语言程序设计》同步教学(电子工业出版社)

2024-08-05
| 20页
| 37人阅读
| 5人下载
普通

内容正文:

项目八 指针 1 C语言程序设计基础 知识目标 掌握指针变量的定义与使用 掌握通过指针变量来引用数组 掌握通过指针变量来引用字符串 掌握指针数组 了解函数指针与指针函数 了解动态内存分配与指向它的指针变量 技能目标 学会指针变量的定义与使用 学会通过指针变量来引用数组 学会通过指针变量来引用字符串 学会指针数组的定义与使用 思政目标 培养全局观,大局意识 培养沟通能力与协调能力 2 任务6 ——动态内存分配与指向它的指针变量 3 C语言允许建立内存动态分配区域,以存放一些临时用的数据,这些数据不必在程序的声明部分定义,也不必等到函数结束时才释放,而是需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为堆(heap)区。可以根据需要,向系统申请所需大小的空间。由于未在声明部分定义它们为变量或数组,因此不能通过变量名或数组名去引用这些数据,只能通过指针来引用。 指针——进阶篇 6.1什么是内存的动态分配 4 对内存的动态分配是通过系统提供的库函数来实现的,主要有malloc , calloc, free,realloc这4个函数。 1. 用malloc函数开辟动态存储区 其函数原型为 void *malloc(unsigned int size) ; 其作用是在内存的动态存储区中分配一个长度为size的连续空间。形参size的类型定为无符号整型(不允许为负数)。此函数的值(即“返回值”)是所分配区域的第一个字节的地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的第一个字节。 指针——进阶篇 6.1怎么建立内存的动态分配 5 2.用calloc函数开辟动态存储区 其函数原型为 void * calloc(unsigned n,unsigned size) ; 其作用是在内存的动态存储区中分配n个长度为size的连续空间,这个空间一般比较大,足以保存一个数组。 指针——进阶篇 6 3.用realloc函数重新分配动态存储区 其函数原型为 void *realloc(void * p,unsigned int size); 如果已经通过malloc函数或calloc函数获得了动态空间,想改变其大小,可以用recalloc函数重新分配。 用realloc函数将p所指向的动态空间的大小改变为size。p的值不变。如果重分配不成功,返回NULL。 指针——进阶篇 7 4.用free函数释放动态存储区 其函数原型为 void free(void * p) ; 其作用是释放指针变量p所指向的动态空间,使这部分空间能重新被其他变量使用。p应是最近一次调用calloc 或malloc函数时得到的函数返回值。 以上4个函数的声明在stdlib.h头文件中,在用到这些函数时应当用“#include <stdlib. h>"指令把stdlib.h头文件包含到程序文件中。 指针——进阶篇 8 【例8-17】建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无不及格分数的,输出不合格的成绩。 【解题思路】用malloc函数开辟一个动态自由区域,用来存5个学生的成绩,会得到这个动态域第1个字节的地址,它的基类型是void型。用一个基类型为float的指针变量score来指向动态数组的各元素,并输出它们的值。但必须先把malloc函数返回的void指针转换为单精度实型指针,然后赋给score。 指针——进阶篇 9 【程序代码】 指针——进阶篇 10 【运行结果】 指针——进阶篇 11 任务7 ——学生信息管理系统 提高篇 12 【管理系统7-1】修改管理系统6-1,使inputScore()函数不返回值,直接可以更新学生成绩。 指针——提高篇 13 【程序代码】 utils.h: 指针——提高篇 14 studentInfo.h: 15 【运行结果】 指针——提高篇 16 【管理系统7-2】定义queryByName()函数,接收主函数传递过来的姓名字符数组,由用户输入姓名,查询学生信息是否存在。 指针——提高篇 17 【程序代码】 指针——提高篇 18 19 【运行结果】 指针——提高篇 20 $$

资源预览图

8.6动态内存分配与指向它的指针变量(课件)-《 C语言程序设计》同步教学(电子工业出版社)
1
8.6动态内存分配与指向它的指针变量(课件)-《 C语言程序设计》同步教学(电子工业出版社)
2
8.6动态内存分配与指向它的指针变量(课件)-《 C语言程序设计》同步教学(电子工业出版社)
3
8.6动态内存分配与指向它的指针变量(课件)-《 C语言程序设计》同步教学(电子工业出版社)
4
8.6动态内存分配与指向它的指针变量(课件)-《 C语言程序设计》同步教学(电子工业出版社)
5
8.6动态内存分配与指向它的指针变量(课件)-《 C语言程序设计》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。