C++多维数组函数参数

use*_*593 0 c++

如何在不定义函数大小的情况下传递二维或多维数组作为函数的参数?

这是我的示例代码:

 void test(int *a) { 
    a[0][0] = 100; 
 } 
 int main()  { 
    int a[2][2]; 
    test(a); 
    cout<<a[0][0]; 
 }
Run Code Online (Sandbox Code Playgroud)

Pup*_*ppy 5

您可以将模板用于静态大小

template<int first, int second> void func(int(&array)[first][second]) {
}
Run Code Online (Sandbox Code Playgroud)

或矢量动态大小的矢量

void func(std::vector<std::vector<int>> array) {
}
Run Code Online (Sandbox Code Playgroud)

但是,你绝对不能做的就是使用int**.一个int[]会腐烂到一个int*int[][]会衰败到一个int*[].想一想 - 否则,语言将如何区分指针数组和多维值数组?你真的永远不应该使用原始数组,他们乞求麻烦,没有安全和隐含的转换wazoo.为静态数组或动态数组提供一个好的,安全的std::array(或者boost::array如果你在C++ 03中)std::vector.