我试图弄清楚如何传递2D数组,它是动态构造的一个函数.
我知道必须指定列数,但我的情况取决于用户输入.
有没有解决方法?
例:
// Some function
void function(matrix[i][j]) {
// do stuff
}
// Main function
int N;
cout << "Size: ";
cin >> N;
int matrix[N][N];
for (int i=0;i<N;i++) { //
for (int j=0;j<N;j++) {
cin >> matrix[N][N];
}
}
sort(matrix);
你明白了:)
最佳答案 如果你在C,合理的选择是:
>使用boost :: multi_array(推荐),或
>制作自己的2D数组类.好吧,你没必要,但是在一个类中封装二维数组逻辑是有用的,并使代码干净.
手动2D数组索引将如下所示:
void func(int* arrayData, int arrayWidth) {
// element (x,y) is under arrayData[x + y*arrayWidth]
}
但是说真的,无论是用课程包装还是享受Boost已经为你准备好了这门课程.手动索引这个很烦人,使代码更加不洁净且容易出错.
编辑
http://gcc.gnu.org/onlinedocs/gcc/Variable-Length.html说C99还有一个解决方案:
void func(int len, int array[len][len]) {
// notice how the first parameter is used in the definition of second parameter
}
也应该在C编译器中工作,但我从未使用过这种方法.