C语言中不能宣接定义动态数组,如:
int n;
ini a[n];
但是实际编程中,有些数组的个数并不能确定,如果定义得数组过大,浪费内存空间,如果定义得太小,又容纳不下。也就是说,用静态数组的方法很难解决。那么,如何解决这个问题呢?
因为数组名代表了该数组的首地址,也就是指针,如果定义一个指针表示数组名,之后将一段内存空间的地址赋给该指针,就可以实现动态数组了。
为了实现动态数组,必须能够动态申请内存空间。c语言提供了一些内存管理函数,这些函数可以 根据需要动态地申请内存空间,以实现动态数组的要求。
实现动态数组的相关函数
(1)mallocO函数
①mallocO函数的用法
void *malloc(unsigned size)
②mallocO函数的功能
在内存的动态存储区分配1个长度为size的连续空间。
③mallocO函数的返回值
申请成功,则返回新分配内存块的起始地址;否则,返回NULL。
(2)free()函数
①freeO函数的用法
void free(void *ptr)
②free()函数的功能
释放由ptr指向的内存块(ptr是调用malloc()函数的返回值)。
③free()函数的返回值:无
原则上,使用malloc()函数申请的内存块,操作结束后应及时使用free()函数释放。尤其是循环使用malloc()函数时,如果不及时释放不再使用的内存块,很可能很快就耗尽系统的内存资源,从而导致程序无法继续运行。
(3)说明
动态数组的本质是一个指向一段地址空间的指针变量,对该连续的地址空间赋值,实现数组的功能。
以上介绍的两个函数都包含在stdlib.h头文件中。
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>