C++ 如何将二维数组传递到CPP中的函数 矢量打印路径(int m[MAX][MAX],int n){ //你的密码在这里 字符串当前路径; 路径查找器((int*)m,0,0,当前路径,n); 返回ans;} //`无效路径查找器(int*m、int i、int j、字符串和当前路径、int n) { 如果(m[i][j]==0)返回;}` //错误:`prog.cpp:在函数void path_finder中(int*,int,int,std::__cxx11::string&,int): prog.cpp:44:15:错误:数组下标的int[int]类型无效 如果(m[i][j]==0)返回`

C++ 如何将二维数组传递到CPP中的函数 矢量打印路径(int m[MAX][MAX],int n){ //你的密码在这里 字符串当前路径; 路径查找器((int*)m,0,0,当前路径,n); 返回ans;} //`无效路径查找器(int*m、int i、int j、字符串和当前路径、int n) { 如果(m[i][j]==0)返回;}` //错误:`prog.cpp:在函数void path_finder中(int*,int,int,std::__cxx11::string&,int): prog.cpp:44:15:错误:数组下标的int[int]类型无效 如果(m[i][j]==0)返回`,c++,pass-by-reference,C++,Pass By Reference,您好,上面提到的是代码错误。有人能告诉我如何将二维数组作为引用传递吗?您只需要传递一个指向函数的简单指针。 假设您有这样一个数组: int my_buff[4][5]; 你要检查或改变它的单元格。 您可以使用如下所示的指针: void change( int *buff) { *(buff+1+5*2)=55; // Will change my_buff[2][1] to 55 } 不应使用用户mhheydarchi给出的答案。在C++中,我认为它是错误的。< /P> 你的问题是:

您好,上面提到的是代码错误。有人能告诉我如何将二维数组作为引用传递吗?

您只需要传递一个指向函数的简单指针。 假设您有这样一个数组:

int my_buff[4][5];
你要检查或改变它的单元格。 您可以使用如下所示的指针:

void change( int *buff)
{
    *(buff+1+5*2)=55; // Will change my_buff[2][1] to 55
}

不应使用用户mhheydarchi给出的答案。在C++中,我认为它是错误的。< /P> 你的问题是:

如何将二维数组传递到CPP中的函数

答案是:

如果要将2d数组传递给函数,有一种特殊的语法

您可以通过引用或指针进行传递。数组维度必须是编译时常量。这是C++的要求。 请参阅:

constexpr size_t NumberOfRows = 3;
constexpr size_t NumberOfColumns = 4;

// Typedef for easier usage
using IntMatrix2d = int[NumberOfRows][NumberOfColumns];

//Solution 1 ------
// Pass by reference
void function1(int(&matrix)[NumberOfRows][NumberOfColumns])  {}

// Pass by pointer
void function2(int(*m)[NumberOfRows][NumberOfColumns])  {}

//Solution 2 ------
// Pass by reference
void function3(IntMatrix2d& matrix) {}

// Pass by pointer 
void function4(IntMatrix2d* matrix) {}


int main()
{
    // Solution 1
    // Handwritten matrix. Dimension is compile time constant
    int matrix1[NumberOfRows][NumberOfColumns];

    // Pass by reference
    function1(matrix1);

    // Pass by pointer
    function2(&matrix1);

    // Solution 2 -----
    IntMatrix2d matrix2;

    // Pass by reference
    function3(matrix2);

    // Pass by pointer
    function4(&matrix2);

    return 0;
}

如果使用<代码>使用(或<代码> Type Fux/Cuth>)来进行类型定义,那么它会变得相当直观。

请看这个问题:在C++中简单地使用A而不是原始数组。因为这是一个学校作业:你可以改变什么?每件事
path\u finder
的当前签名是什么?它不是学校作业,我使用的是Leetcode,我只获得了PrintPath函数OK,所以你不能将其更改为?我同意@HolyBlackCat-你可以通过将其设置为
int my\u buff[4*5]的1D数组来保存答案相反-如果允许的话。