分配并返回一个二维数组指针,其中行和列是运行时参数
Posted
技术标签:
【中文标题】分配并返回一个二维数组指针,其中行和列是运行时参数【英文标题】:allocating and returning a 2d array pointer where rows and columns are runtime parameters 【发布时间】:2017-03-09 12:37:22 【问题描述】:我编写了一个简单的代码,我想在 C++ 中分配一个二维数组。行(m)和列(n)将由用户在运行时提供。 所以函数 func 应该返回一个指向分配数组的指针。下面是代码但是我得到了编译错误。
int** func(int **arr,int m,int n)
arr=new int *[m];
for(int i=0;i<m;i++)
arr[i]= new int arr[n];
return arr;
int main()
int **arr;
arr=func(arr,4,10)
【问题讨论】:
运行时大小的数组 ==std::vector
。如果你可以使用它,你应该使用它。
你得到哪个编译错误?
您在arr=func(arr,4,10)
的末尾错过了;
。 arr[i]= new int arr[n];
应该是 arr[i]= new int[n];
注意:这是一个指针数组,不是二维数组。即使以相同的方式访问,它们也是不同的动物。 more refs here
【参考方案1】:
使用这个:
arr[i] = new int[n];
而不是
arr[i]= new int arr[n];
另外,在函数调用后加分号,
arr=func(arr,4,10);
完整代码:
#include <iostream>
using namespace std;
int** func(int **arr,int m,int n)
arr = new int*[m];
for(int i=0;i<m;i++)
arr[i] = new int[n];
return arr;
int main()
int **arr;
arr=func(arr,4,10);
【讨论】:
哦该死..我怎么能在新的运算符中给出变量名!! .. 非常感谢您指出。以上是关于分配并返回一个二维数组指针,其中行和列是运行时参数的主要内容,如果未能解决你的问题,请参考以下文章
如何分配具有连续内存的二维数组?如何使用它来访问行和列?给我一个例子