#include <iostream>
using namespace std;
enum {ROW = 7, COLUMN = 8};
void show(int matrix[][COLUMN], int, int);
int main (){
int horizontal = 0;
int vertical = 5;
int goldCoin[ROW][COLUMN] = {
{5, 1, 0, 4, 1, 1, 2, 0},
{0, 3, 2, 1, 0, 3, 0, 1},
{4, 3, 0, 6, 5, 0, 1, 0},
{3, 1, 0, 3, 4, 0, 1, 3},
{0, 5, 2, 0, 1, 1, 5, 1},
{2, 1, 6, 1, 6, 0, 2, 1},
{0, 0, 4, 3, 2, 3, 0, 2}
};
show(goldCoin[ROW][COLUMN], 1, 1);
return 0;
}
void show(int matrix[][COLUMN], int x, int y){
if(y >= COLUMN)
cout << "[error: column index is beyond array limit]" << endl;
else
cout << "[" << matrix[x][y] << "]" << endl;
}
错误指向函数调用&#39; show(goldCoin [ROW] [COLUMN],1,1);&#39;在主要内部。作为初学者,我在该陈述中看不到任何语法错误。有人可以帮忙吗?
答案 0 :(得分:1)
传递参数是错误的方法。传入不带括号的数组名称标识符:
show(goldCoin, 1, 1);
表达式goldCoin[ROW][COLUMN]
表示2D数组中类型int
的单个值。因此,您传递int
值代替函数所需的int (*)[]
值。在这种情况下,这实际上是读出界限,因为没有[7][8]
坐标的元素用goldCoin[7][8]
表示,因为数组是零索引的。
只有在函数声明/定义中,签名才是:
void show(int matrix[][COLUMN], int, int);
不要混淆两者。
答案 1 :(得分:1)
在调用show(goldCoin[ROW][COLUMN], 1, 1);
时,您传递int
作为第一个参数,而不是2D数组,正如您可能想要的那样。
我相信您的意思是show(goldCoin, 1, 1);
。