C语言 动态创建数组学习总结

目录1. 前言2. 原理3. malloc和calloc介绍3.1 malloc函数3.2 calloc函数3.3 free函数3.4 注意事项4. 代码演示4.1 动态创建一维数组4.2 动态创建二维数组5. 总结1. 前言C语言不允许直接使用 arr[n] 来声明一个数组,但是借助malloc和calloc函数就可以实现动态创建数组。2. 原理先来看看符合C语言标准的数组定义:int arr[10];这个语句中包含了:“类型说明符” “数组名”和“常量(表达式)”三个信息,编译器拿到这三个信息
摘要由CSDN通过智能技术生成

1. 前言

C语言不允许直接使用 arr[n] 来声明一个数组,但是借助malloccalloc函数就可以实现动态创建数组。

2. 原理

先来看看符合C语言标准的数组定义:int arr[10];这个语句中包含了:“类型说明符” “数组名”和“常量(表达式)”三个信息,编译器拿到这三个信息之后会向系统申请所需要的内存,之后就可以通过“数组名”来使用这块内存空间。

动态创建数组就是把“常量(表达式)” 替换成 “变量(表达式)”,但是编译器不会自动帮我们完成这项任务,所以,只需要手动申请一段内存空间,然后通过指针访问这段内存空间就可以实现动态创建数组了。

在C语言中可以使用malloccalloc函数手动申请内存。

3. malloc和calloc介绍

3.1 malloc函数

  • malloc的原型为:void *malloc(size_t size); 参数就是需要分配的内存字节数。
  • 如果内存池内的可用内存满足需求,malloc就返回一个指向被分配的内存块起始位置的void * 类型的指针。正因为返回是一个 void * 类型的指针,所以它可以将其转换成任意类型。
  • 当内存池中的容量不足以满足malloc的申请时,malloc会返回NULL 指针。

3.2 calloc函数

  • calloc的原型为:void *calloc(size_t num_elements, size_t element_size); 第一个参数是 元素的个数,第二个参数是 单个元素的字节数。
  • calloc除了参数与malloc不同外最大的区别就是:calloc将分配的内存都初始化为0了,而malloc没有初始化。除此之外,两个函数是相同的。

3.3 free函数

  • free的原型为:void free(void *pointer);
  • 每当手动分配的内存不再使用时,都应该调用free函数归还分配的内存空间

3.4 注意事项

  1. 由于申请内存空间时,我们无法保证可用的内存空间一定能满足我们的需求,所以,一定要对返回值进行检查,确保返回值不会是一个NULL指针。
  2. malloccalloc都被定义在<stdlib.h >头文件里。
  3. 在使用过程中一定要注意边界问题,不要越界,否则很有可能在free时报错。万一有编译器不报错,这样可能会导致很严重的问题。

4. 代码演示

4.1 动态创建一维数组

创建长度为n的数组

   #include <stdio.h>
   #
  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值