繁体   English   中英

无法在 C++ 中传递二维数组,这会导致错误无法将 int(*) 转换为 int*

[英]Cannot pass an 2D array in C++ which gives error cannot convert int(*) to int*

代码是

#include<iostream>
using namespace std;
void lookup(int* main,int row,int col,int num,int* up)
{
int i,j;
    for(i=0;i<num;i++)
    {
        for(j=0;j<num;j++)
        {
        if((row==i && (col==j+1 || col==j-1)) || (col=j && (row==i+1 || row==i-1)))//neighbour condition
        {
        if((*(main+i*num)+j)==1)
        {
            if((*(up+(i*num)+j)==1))
            {
                 *((up+num*i)+j)=1;
                 lookup(main,i,j,num,up);
            }
        }
        }
        }
    }
}
int main()
{
// flipping array b, input array a, we have marked array b
int n,i,j,botr,botc,place;
cin>>n;
int a[n][n],b[n][n];
for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
    {
        cin>>a[i][j];
        b[i][j]=0;
    }
}
cin>>botr>>botc;
b[botr][botc]=1;
lookup(a,botr,botc,n,b);
//seeing which are 1 in b
place=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(b[i][j]==1)
place++;
}
}
cout<<place;
}

我得到的错误是

cannot convert 'int (*)[(((sizetype)(((ssizetype)n) + -1)) + 1)]' to 'int*' for argument '1' to 'void lookup(int*, int, int, int, int*)'|

所以我得到了一个索引从 0,0 开始的矩阵。 矩阵的值为 0 和 1。现在,当我被赋予任何特定位置(该位置的值为 1)时,我必须找到所有可能的不同点,我可以 go 并且值为 1,因为我只能移动在相邻的方式中,并且方式不包含0。

谢谢。

a不是整数数组,而是整数数组的数组。 因此,它不会转换为指向 integer 的指针。

根据我对您的代码的理解,您可以使用&a[0] ,因为a[0]一个整数数组。

所以感谢您的回复,但我无法实施您的方法。 无论如何,这是我想出的解决方法。 所以我定义了两个额外的变量L1L2类型的int* 定义L1=a[0][0], L2=b[0][0] 然后将它们传递给lookup() function 并像魅力一样工作。 从现在开始,我将始终以这种方式传递二维或更多维数组。 谢谢你们的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM