c语言 如何分配二维数组内训,c语言编程如何实现二维动态内存分配

C 语言编程经常需要用到数组,若实现能确定数组的长度,非常好实现数组的定义。但是,如果数组的长度需要经过程序运行后才能确定,动态内存分配就比较合适了。开发时,常用的动态内存分配都是一维的,今天需要用到二维动态内存分配,将过程记录在此。

3ce2b1bf5f41e8a862df3949fcc33b9a.png

二维动态内存分配要解决的问题

假设,程序运行过程中,会产生一串数字,长度不固定,需要将这串数字存储下来。

显然,数组非常适合存储这串数字,然而因为长度不能事先确定,所以使用常规的定义数组方法只能定义一个足够大的数组,这往往会造成资源的浪费。动态内存分配非常适合解决事先不能确定长度的数组的定义,动态内存分配很简单,C 标准库提供了 malloc 函数分配内存和 free 函数释放内存。在上个问题基础上,要求存储 5 串这样的数字。

为了解决这个问题,当然可以用 5 个数组存储,但是如果想将它们连接起来,该怎么做呢?二维数组就非常适合了。上面已经提到,因为每串数字的长度不能确定,较难使用常规的数组定义方法,这就需要二维动态内存分配了。

C语言实战

在实现二维动态内存分配前,先来看一维的,假设要存的数字串是字符串。

buf1 = NULL; 有这句的原因是,释放后,buf1 指针仍然可用,但是其指向的内容已经不可知,为了避免造成未知错误,让其指向 NULL。

编译,执行之,结果如下

a0e7222d0cee6f358e8dcc5f293856ff.png

非常简单。下面解决问题2:

思路是这样的:假设已经分配好 5 个类似于 buf1 的内存,为了将它们连接起来,只要再分配一个长度为 5 的数组,数组单元存储 buf1, buf2, buf3, buf4, buf5 即可。

按照这样的思路,可以按照下面的方法实现:

但是,如果要求存 n 串数字串呢,而 n 也事先不能确定呢?这就需要二维动态内存分配了。

代码如下:

执行之,得到结果如下

一切符合预期。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值