C++二维数组指针引用问题

我在main()里定义了一个int map[WIDTH - 2][HEIGHT - 2];二维数组,并在下面取指针传递参数引用这个数组,可是地址好像是正确的,可就是显示不出数组的内容怎么办?

书上是这样写的:

你这三张截图可真够饶人的。不太清楚你的描述。
那个pushkey()函数中,map是Output参数还是Input参数?换句话说,map只是为了打印里面的值(Output)?还是要为map数组赋值(Input)?追问

我是要在pushkey里面操作这个数组,包括获取里面的某个成员值以及为某个成员赋值

追答

按照你的定义,将map的一维数组的地址传进去。是可以的。如 map[0],这样能够对map[0][0]~ map[0][HEIGHT - 2];这一行的元素进行操作。
你打印数组的语句怎么没截出来?贴出来看看。

追问

追答

呵呵。你这就不对了。在你传进来的时候,形参map是以一个一维数组的身份进来的,是吧?

看看你的pushkey定义:

pushkey(/*...*/, int* map, /*...*/);   //此处map是一维数组,对吧?

然而你用的时候,却是:

if(map[x-1][y-1]==(turn ? 1:2))    //这里,你将map当作二维数组来用了!
    return;
 map[x-1][y-1] =(turn ? 1:2);  //这里也是!

你说会正确么?

追问

可是我如果写成int (*map)[WIDTH - 2]也不行啊

追答

谁说非要那样写?你这样:

map[WIDTH-2];

为什么要加个*呢?它又不是二维数组。在pushkey()里,它就是一个一维数组。

追问

我要传入的是指针啊,难道这里不用传指针就可以直接用那个二维数组吗?

追答

你首先定义了一个二维数组,对吧?map[][].
我问你一个问题,二维数组的一维表示,是什么意思?即 map[2]是啥意思?map[1],map[0]又分别表示啥意思?你理解了这点么?
理解了这点,再往下继续看。
然后你又将这个二维数组的每一个一维地址传作为参数,传进pushkey()。所以你能操作的,也就是这一维内(一行内)的元素。

温馨提示:答案为网友推荐,仅供参考
相似回答