如何将二维数组指针作为参数放入函数中

时间:2015-10-12 16:34:16

标签: c++ arrays parameter-passing

我正在使用C ++解决算法问题。

我想通过init输入动态地放置每个维度大小不同的二维数组的指针。

我编码为函数的内容如下:内容(函数的函数)毫无意义。

int arrayD[totalGroupCount][totalBeadCount];

int a = cal(arrayD);

这个功能的结果

int cal(int *arr[]){
int test = arr[0][0];
return 0;
}

它只是说"没有匹配功能调用''""

我确实声明了功能' cal'。

我用不同的符号做了很多次

SELECT * FROM `order` WHERE date_added BETWEEN '2014-10-01' AND '2014-11-01';

但它同样地说我。

我已经搜索过这个问题,但我得到了同样的错误答案(我完全不明白他们是怎么做的)

2 个答案:

答案 0 :(得分:2)

使用c ++时,std::vector< vector<int > >

有更好的解决方案
int cal(std::vector<std::vector<int> > arr)
{
    int test = arr[0][0];
    return 0;
}

并调用函数

std::vector<std::vector<int> >arrayD (totalGroupCount, std::vector<int>(totalBeadCount));
int a = cal(arrayD);

此外,您可以使用push_back()函数动态地向向量添加元素。

答案 1 :(得分:0)

您需要使用malloccallocnew分配内存:

long a;
int **pt; // a pointer to pointer to int
pt=new int*[rows]; // allocate memory for pointers,
// not for ints

for (a=0;a<rows;++a) pt[a]=new int[columns]; // here you're allocating
// memory for the actual data

这将创建一个类似于pt[rows][columns]的数组。

然后你这样传递pt

int Func(int **data) {
//do something
return //something
}

Func(pt);