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数组来保存答案代码>相反-如果允许的话。