這個函數在這裏被問了幾次,但我對某個特定的情況感興趣。是否有可能讓數組的大小通過額外的參數定義?通過參數確定的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