当我尝试将函数与二维数组一起使用时,出现此错误:
错误:数组下标的无效类型“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]
所有函数都给出相同的错误,我不知道如何修复它。
问题是
PrintWholeField
有一个 int(*)[7]
作为其第一个参数,但您传递 Feld[i][j]
(其类型为 int
)作为参数。因此,要解决此问题,请将调用替换为:
//--------------vvvv------------>removed the indices[i][j]
PrintWholeField(Feld, i , j)
此外该计划有 UB 的原因:
i
。要解决第一个问题,只需初始化
i
。
0
开头。