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

标签 c++ arrays

代码是

#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)时,我必须找到我可以去的所有可能的不同点并且值为 1,因为我只能移动在相邻的方式和方式不包含 0。

谢谢。

最佳答案

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

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

关于c++ - 无法在 C++ 中传递二维数组,这会导致错误无法将 int(*) 转换为 int*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58358350/

相关文章:

arrays - ColdFusion 结构中的数组键

ruby-on-rails - Ruby/rails 数组填充空项

c++ - 在天穹上使用点光源的奇怪照明效果

c++ - 在 Arduino 上重载流式传输

javascript - 如何在窗口调整大小时覆盖我的数组?

java - Java中如何将数组解析为对象

javascript - 将 json 对象数组解析为特定格式

c++ - 确定 uint32_t 的字节顺序

c++ - 无锁 "decrement if not zero"

c++ - 如何使用 fseek() 和 fwrite() 覆盖二进制文件中的单个字节?