【发布时间】:2014-12-30 15:41:09
【问题描述】:
这个函数在这里被问过几次,但我对一个特定的案例感兴趣。是否可以通过附加参数定义传递的数组的大小?
举个例子,假设我想要一个函数来打印一个二维数组。但是,我的数组可能每次都没有相同的尺寸。如果我可以有其他参数来定义该数组的大小,那将是理想的。我知道我可以根据需要轻松地将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 的功能,或非标准编译器扩展。 Link to related question
标签: c++ arrays variable-length-array