4

我一直在尝试将一个未知大小的多维数组传递给一个函数,但到目前为止还没有运气,当声明数组时,它的维度是变量:

double a[b][b];

据我所知,我需要在声明函数时给出 b 的值,a 可以是未知的。我尝试将 b 声明为全局变量,但随后它说它必须是一个常量。

IE:

int b;

double myfunction(array[][b])
{
}

int main()
{
int a;
double c;
double myarray[a][b];

c=myfunction(myarray);

return 0;
}

有什么办法让它工作吗?

4

4 回答 4

4

按值传递:

double myfunction(double (*array)[b]) // you still need to tell b

通过 ref :

double myfunction(int (&myarray)[a][b]); // you still need to tell a and b

模板方式:

template<int a, int b> double myfunction(int (&myarray)[a][b]); // auto deduction
于 2012-07-25T17:44:29.613 回答
1

如果你想传递一个未知大小的数组,你可以像这样在堆中声明一个数组

//Create your pointer
int **p;
//Assign first dimension
p = new int*[N];
//Assign second dimension
for(int i = 0; i < N; i++)
p[i] = new int[M];


 than you can declare a function like that: 
double myFunc (**array);
于 2014-04-03T17:22:28.447 回答
1

也许阅读一些关于 C++ 和数组的参考资料会有所帮助,

http://en.cppreference.com/w/cpp/container/array

于 2012-07-25T17:37:49.810 回答
-1
void procedure (int myarray[][3][4])

More on this here

于 2012-07-25T17:36:21.897 回答