c++ - 将二维数组传递给 C++ 函数

我有一个函数,我想将一个可变大小的二维数组作为参数。

到目前为止,我有这个:

void myFunction(double** myArray){
     myArray[x][y] = 5;
     etc...
}

我已经在我的代码的其他地方声明了一个数组:

double anArray[10][10];

但是,调用 myFunction(anArray) 会给我一个错误。

我不想在传入数组时复制它。在 myFunction 中所做的任何更改都应该改变 anArray 的状态。如果我理解正确,我只想将指向二维数组的指针作为参数传递。该函数还需要接受不同大小的数组。例如,[10][10][5][5]。我该怎么做?

最佳答案

将二维数组传递给函数有三种方式:

  1. 参数为二维数组

    int array[10][10];
    void passFunc(int a[][10])
    {
        // ...
    }
    passFunc(array);
    
  2. 参数是一个包含指针的数组

    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);
    
  3. 参数是指向指针的指针

    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 中使用移位运算符进行乘法和除法实际上更快吗?

c++ - 为什么 C++ 编译器不定义 operator== 和 operator!=?

c++ - 使用字符串分隔符(标准 C++)在 C++ 中解析(拆分)字符串

c++ - 用 C 或 C++ 为 Android 编写应用程序?

c++ - 删除 NULL 指针是否安全?