gpt4 book ai didi

c++ - 以二维数组作为参数的函数调用

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:51 25 4
gpt4 key购买 nike

我必须调用一个将二维数组作为参数传递的函数。函数调用:

    int n;
char ch;
cin>>n;
bool b[n][n];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cin>>ch;
if(ch=='X'){b[i][j]=1;} //reads input from a file
}
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<evaluate(n,b, i, j); //shows error no matching function for call to evaluate
}
cout<<endl;
}

但是,它显示错误没有与调用匹配的函数这是我的函数评估声明:

int evaluate(int n,bool** b,int x,int y){
//body
}

我尝试过函数声明的变体:evaluate(int n,bool b[n][n],int x,int y);但它给出了同样的错误。同样在删除二维数组参数时,该函数起作用。请建议我的错误是什么。

最佳答案

数组名称在传递给函数时转换为指向数组第一个元素 的指针。二维数组是一个一维数组,其所有元素都是一维数组类型,即它是一个数组的数组

当二维数组名称传递给函数时,它会衰减为指向数组第一个元素的指针。如上所述,元素本身是一维数组,因此数组名称的类型变为指向数组的指针
指向数组的指针指向指针的指针 都是不同的类型(彼此不兼容)。要将指针传递给数组 类型,您需要将您的函数声明为

 int evaluate(int n, bool (*b)[n], int x, int y);  

或简单地

 int evaluate(int n, bool b[][n], int x, int y);

关于c++ - 以二维数组作为参数的函数调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24464641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com