错误:从“int”到“int (*)[7]”的无效转换[-fpermissive]

问题描述 投票:0回答:1

当我尝试将函数与二维数组一起使用时,出现此错误:

错误:数组下标的无效类型“int [7][7][int*]”

我编写了许多使用相同数组的函数。一个例子是:

void PrintWholeField(int FeldV[7][7], int i , int j){
    for (int k = 0 ; k < i ; k++ ){
        for (int m = 0 ; m < j ; m++ ){
            cout << FeldV[k][m];
        }
        cout << endl;
    }
}

最初,第一个尺寸留空(我输入了 7,因为也许这样就可以了 - 但没有)。

我想像这样测试它:

int main ()
{
    int i, j = 7;
    int Feld[7][7];
    for (int k = 0 ; k < i ; k++ ){
        for (int m = 0 ; m < j ; m++ ){
            Feld[k][m]= 0;
        }
    }
    PrintWholeField(Feld[i][j], i , j);
    return 0;
}

但是它给了我错误:

错误:从“int”到“int (*)[7]”的无效转换[-fpermissive]

所有函数都给出相同的错误,我不知道如何修复它。

c++ arrays function integer
1个回答
0
投票

问题是

PrintWholeField
有一个
int(*)[7]
作为其第一个参数,但您传递
Feld[i][j]
(其类型为
int
)作为参数。因此,要解决此问题,请将调用替换为:

//--------------vvvv------------>removed the indices[i][j]
PrintWholeField(Feld, i , j)

此外该计划有 UB 的原因

  1. 首先,因为您使用的是未初始化的变量

    i

    。要解决第一个问题,只需初始化
    i

  2. 您正在越界访问数组,因为在 C++ 中数组索引以

    0

     开头。

© www.soinside.com 2019 - 2024. All rights reserved.