美文网首页
数组地址和数组名的故事

数组地址和数组名的故事

作者: 冰吉凌 | 来源:发表于2015-04-19 21:50 被阅读64次

    废话少说直接上题:

    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个字节的平民。

    相关文章

      网友评论

          本文标题:数组地址和数组名的故事

          本文链接:https://www.haomeiwen.com/subject/hmvyfttx.html