#include <stdio.h>void Fun(char b[3][10]){ ......}void main(){ char a[3][10]; Fun(a); }问题:对于二维数组来说,a,a[0],&a[0],&a[0][0]都指二维数组首地址,但在函数调用时,却只能用a和&a[0]作为参数,其它均会出现编译错误,这是为什么?
数组首地址=数组第0行首地址=数组第0行第0列的地址*(ptr+0)就是第0行首地址应该同ptr+0是一样的吧?&a[0][0]是不是应该相当于*(ptr+0)+0,表示第0行的首地址?应该也同上一样吧?如果用printf显示a,a[0],&a[0],&a[0][0]的值都是一样的呀,函数调用时不是只要获得数组首地址就行了吗?
非常感谢knocker兄孜孜不倦的指教!从结果上看a与&a[0]是同一类型,而&a[0][0]与a[0]是同一类型。可是为什么会是这样的结果,应如何理解呢?