我在main()里定义了一个int map[WIDTH - 2][HEIGHT - 2];二维数组,并在下面取指针传递参数引用这个数组,可是地址好像是正确的,可就是显示不出数组的内容怎么办?
书上是这样写的:
我是要在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当作二维数组来用了!你说会正确么?
可是我如果写成int (*map)[WIDTH - 2]也不行啊
追答谁说非要那样写?你这样:
map[WIDTH-2];为什么要加个*呢?它又不是二维数组。在pushkey()里,它就是一个一维数组。
我要传入的是指针啊,难道这里不用传指针就可以直接用那个二维数组吗?
追答你首先定义了一个二维数组,对吧?map[][].
我问你一个问题,二维数组的一维表示,是什么意思?即 map[2]是啥意思?map[1],map[0]又分别表示啥意思?你理解了这点么?
理解了这点,再往下继续看。
然后你又将这个二维数组的每一个一维地址传作为参数,传进pushkey()。所以你能操作的,也就是这一维内(一行内)的元素。