位置:首页 > 软件操作教程 > 编程开发 > C语言 > 问题详情

C语言 动态数组的实现

提问人:刘团圆发布时间:2020-12-01

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头文件中。

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部