二维数组名和二级指针

来源:互联网 发布:java同步和异步的区别 编辑:程序博客网 时间:2024/05/16 06:44
一直以为二维数组名即二级指针,如int a[2][3]与int **p,a与p是可以等价的。直到今天才发现,这个认识是错误的.
如下示例:
图一: 



编译程序,报如下错:
图二: 


 

数组指针不能与二级指针转换. 强制将其转换如下:
图三:

 

运行出错.
分析下原因:
现在二级指针arr的值即为二维数组b的首地址,而二维数组元素的存储是连续的地址,
实际上就是一维数组,即*(arr+i)的值为数组元素值,再执行*(*(arr+i)+j)操作,则
会出core
正确代码如下:
图四

 


或者
图五

 

原创粉丝点击