c++中在堆区通过new关键字创建二维数组的方法

背景:因为本人课程《计算方法》需要自己编译程序进行上千行的矩阵的运算,栈区的数组长度不能满足,因此在堆区创建一个二维数组进行相应的操作

在网上搜索如何在堆区创建二维数组,得到以下结果:

如何理解这个语句的含义呢?
首先,我们都知道,在堆区中创建一维数组的方式为:

int *p = new int[10];

这个语句的意思是:在堆区开辟了一个长度为10个单位,元素的数据类型为int的存储空间,然后将这段存储空间的首地址赋值给指针p,指针p通过下标运算符或者自增即可访问对应的地址里的元素。

那么我们再来看这个堆区二维数组的语句

int (*p)[10] = new int[5][10];

按照鄙人的拙劣理解:

  1. 语句的右半部分(new int[5][10])是在堆区开辟了5段长度为10个单位的存储空间(粗俗的讲就是5行10列),将返回每一段的10个地址(粗俗的讲就是返回同一行的所有元素地址(列元素的地址))

  2. 语句的左半部分(int (*p)[10])是创建了一个含有10个指针的一维数组,对应接受堆区返回的同一行的所有元素地址。

以上就是我对堆区创建二维数组的理解,不知道理解的对不对,如果有不对的地方或者不理解的,希望各位小伙伴们在评论区私信我呀!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值