一直以为二维数组名即二级指针,如int a[2][3]与int **p,a与p是可以等价的。直到今天才发现,这个认识是错误的.
如下示例:
图一:
编译程序,报如下错:
图二:
数组指针不能与二级指针转换. 强制将其转换如下:
图三:
运行出错.
分析下原因:
现在二级指针arr的值即为二维数组b的首地址,而二维数组元素的存储是连续的地址,
实际上就是一维数组,即*(arr+i)的值为数组元素值,再执行*(*(arr+i)+j)操作,则
会出core
正确代码如下:
图四
或者
图五