这个函数在这里被问了几次,但我对某个特定的情况感兴趣。是否有可能让数组的大小通过额外的参数定义?通过参数确定的C++传递动态数组
举个例子,假设我想要一个打印二维数组的函数。但是,我阵列可能每次都没有相同的尺寸。如果我可以有额外的参数来定义数组的大小,那将是理想的。我知道我可以根据需要轻松地将n
换成一个数字,但如果我使用单独的头文件具有更复杂的功能,每次出现不同大小的数组时都会去编辑头文件,这似乎很愚蠢。我知道error: use of parameter 'n' outside function body...
的结果如下,但希望找到一些解决方法。我也试过g++ -std=c++11
但仍然是一样的错误。
#include <iostream>
using namespace std;
void printArray(int n, int A[][n], int m) {
for(int i=0; i < m; i++){
for(int j=0; j<n; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
}
int main() {
int A[][3] = {
{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}
};
printArray(3, A, 4);
return 0;
}
据说,这可以用C99完成,并且在this question也提到,但我无法弄清楚如何与C++。
这在标准C++中是不可能的。 VLA是C-only特性,或者是非标准的编译器扩展。 [链接到相关的问题](http://stackoverflow.com/questions/22013444/are-variable-length-arrays-there-in-c) – 2014-11-03 21:51:19