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个指针的一维数组,对应接受堆区返回的同一行的所有元素地址。

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

Guess you like

Origin blog.csdn.net/qq_42518941/article/details/109322467