C语言不允许直接使用 arr[n] 来声明一个数组,但是借助malloc和calloc函数就可以实现动态创建数组。 2. 原理 先来看看符合C语言标准的数组定义:int arr[10];这个语句中包含了:“类型说明符” “数组名”和“常量...<br><h3>目录</h3><br>1. 前言<br>C语言不允许直接使用arr[n]来声明一个数组,但是借助malloc和calloc函数就可以实现动态创建数组。<br>2. 原理<br>先来看看符合C语言标准的数组定义:int arr[10];这个语句中包含了:“类型说明符” “数组名”和“常量(表达式)”三个信息,编译器拿到这三个信息之后会向系统申请所需要的内存,之后就可以通过“数组名”来使用这块内存空间。<br>动态创建数组就是把“常量(表达式)” 替换成 “变量(表达式)”,但是编译器不会自动帮我们完成这项任务,所以,只需要手动申请一段内存空间,然后通过指针访问这段内存空间就可以实现动态创建数组了。<br>在C语言中可以使用malloc和calloc函数手动申请内存。<br><h2>3.1 malloc函数</h2><br>malloc的原型为:void *malloc(size_t size);参数就是需要分配的内存字节数。如果内存池内的可用内存满足需求,malloc就返回一个指向被分配的内存块起始位置的void *类型的指针。正因为返回是一个void *类型的指针,所以它可以将其转换成任意类型。当内存池中的容量不足以满足malloc的申请时,malloc会返回NULL指针。<br><h2>3.2 calloc函数</h2><br>calloc的原型为:void *calloc(size_t num_elements, size_t element_size);第一个参数是 元素的个数,第二个参数是 单个元素的字节数。calloc除了参数与malloc不同外最大的区别就是:calloc将分配的内存都初始化为0了,而malloc没有初始化。除此之外,两个函数是相同的。<br><h2>3.3 free函数</h2><br>free的原型为:void free(void *pointer);每当手动分配的内存不再使用时,都应该调用free函数归还分配的内存空间<br><h2>3.4 注意事项</h2><br>