分配并返回一个二维数组指针,其中行和列是运行时参数

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);

【讨论】:

哦该死..我怎么能在新的运算符中给出变量名!! .. 非常感谢您指出。

以上是关于分配并返回一个二维数组指针,其中行和列是运行时参数的主要内容,如果未能解决你的问题,请参考以下文章

如何分配具有连续内存的二维数组?如何使用它来访问行和列?给我一个例子

C++二维数组(指针)做参数

寻找二维数组中唯一的行和列的索引,以及这些位置上元素的最小和。

在二维数组中的行和列处查找最大值

在二维数组中搜索零并制作相应的行和列 0

c语言:将一个二维数组行和列的元素互换,存到另一个二维数组中。