【问题标题】: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

标签: c++ pointers multidimensional-array


【解决方案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);
}

【讨论】:

  • 哦该死..我怎么能在新的运算符中给出变量名!! .. 非常感谢您指出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-21
  • 1970-01-01
  • 2010-12-18
相关资源
最近更新 更多