我有一个函数,我想将一个可变大小的二维数组作为参数。
到目前为止,我有这个:
void myFunction(double** myArray){
myArray[x][y] = 5;
etc...
}
我已经在我的代码的其他地方声明了一个数组:
double anArray[10][10];
但是,调用 myFunction(anArray)
会给我一个错误。
我不想在传入数组时复制它。在 myFunction
中所做的任何更改都应该改变 anArray
的状态。如果我理解正确,我只想将指向二维数组的指针作为参数传递。该函数还需要接受不同大小的数组。例如,[10][10]
和 [5][5]
。我该怎么做?
最佳答案
将二维数组传递给函数有三种方式:
参数为二维数组
int array[10][10];
void passFunc(int a[][10])
{
// ...
}
passFunc(array);
参数是一个包含指针的数组
int *array[10];
for(int i = 0; i < 10; i++)
array[i] = new int[10];
void passFunc(int *a[10]) //Array containing pointers
{
// ...
}
passFunc(array);
参数是指向指针的指针
int **array;
array = new int *[10];
for(int i = 0; i <10; i++)
array[i] = new int[10];
void passFunc(int **a)
{
// ...
}
passFunc(array);
https://stackoverflow.com/questions/8767166/
相关文章:
c++ - 如何实现 STL 风格的迭代器并避免常见的陷阱?
c++ - 我可以使用 break 退出多个嵌套的 'for' 循环吗?
c++ - 在现代 C++11/C++14/C++17 和 future 的 C++20 中枚举到字
c++ - new/delete 和 malloc/free 有什么区别?
c++ - 在 C 中使用移位运算符进行乘法和除法实际上更快吗?
c++ - 为什么 C++ 编译器不定义 operator== 和 operator!=?
c++ - 使用字符串分隔符(标准 C++)在 C++ 中解析(拆分)字符串