c++ - 将 2D 数组传递给 C++ 函数

标签 c++ arrays pointers multidimensional-array

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

到目前为止我有这个:

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);
    

关于c++ - 将 2D 数组传递给 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310886/

相关文章:

c++ - c++ 接口(interface)必须遵守五法则吗?

c++ - g++ 合并 : ld: fatal: file main. o:未知文件类型

c++ - 创建对象 vector 以使用 GSL 求解 ODE 时出现段错误

java - 如何读取和排序仅由空格分隔的数据?

c - 在 C 的另一个结构中初始化和访问嵌套的 struct char 指针

c++ - 在 C++ 中,这个结构是什么意思 "InterceptionKeyStroke &kstroke = * (InterceptionKeyStroke *) &stroke"?

c# - 使用 C# 如何清理 MSMQ 消息格式以使用 C++ IXMLDOMDocument2

java - 当数组不为空时索引越界

SwiftUI 系统光标

c - 如何访问由双指针表示的二维数组的元素作为 C 中的一维数组