废话少说直接上题:
eg: int arry[3][5]={0};
问:arry的数据类型是啥?
答:判断数据类型最牛(jian)掰(dan)的方法就是把变量名遮住啦;所以arry的本质数据类型是int [3][5];但是arry也可以代表为类型int (*)[5],是一个二级指针,且第二个维度是5;
问:int (*ptr) [3][5] = & arry;
答:成立; ptr的数据类型是int [3][5]类型的指针;ptr解引用得到arry
问:int (*p)[5] = arry;
答:成立;arry 的数据类型可以是一个二级指针,其中第二个维度是5,即int [5]类型的指针;
问:int *pp =*arry;
答:成立;arry是一个二级指针,解引用得到一个一级指针即一维指针;
几维数组名代表的就是几维指针;
数组名本质:(参考:http://tech.163.com/05/0823/11/1RR94CAS00091589.html)
(1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;
(2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;
(3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址!
对(3)的理解:数据名作为函数形参时,其全面沦落为一个普通指针!它的贵族身份被剥夺,成了一个地地道道的只拥有4个字节的平民。