回复 3楼 吹水佬
突然明白了~其实int (*p)[4]这实质只为p指针分配了一个大小为int*的空间~虽然sizeof(*p)显示分配的是4个int大小的空间~但实质那p本身并不是真正占用那些空间~~也就是说int (*p)[4]实质只占用一个int*的内存空间~
其实申明数组本身就是防止该储存空间被系统非法利用~至于定义方面就算是定义其它数据类型也可以通过强制转型实现该类型的功能~只是那储存空间数据不受"保护"罢了~
相比于
int *p[4]这本身是一个数组~p先和[4]结合再和*结合~加个*只是表示该数组元素能读取其地址值~~其实就算是不加也能实现该功能~int p[4]
通过*((int*)p[0])也能读取其信息~只不过为了操作方便和程序可读性~大概是遵循尽量减少强制转型次数这个潜规则而在申明变量的时候选择恰当的数据类型吧~
不过~数组到底还是起到保护内存空间不被其它系统数据改写的作用……这个中途用强制转型来替代还是起不到保护作用的的~~~
[此贴子已经被作者于2017-5-23 12:50编辑过]