数组地址和数组名的故事

废话少说直接上题:

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • void* 类型指针:通用变体类型指针;可以不经转换,赋给其他指针,函数指针除外;malloc返回的就是void*...
    冰吉凌阅读 8,647评论 0 18
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,803评论 3 44
  • 醉相忘, 何当缠眷; 堪怜寂夜, 疏影话凄凉。 身心空, 提笔撰词; 觅寻灵感, 缪斯致箴言。 2016/05/2...
    八点心晴阅读 1,222评论 0 1
  • 一个梦 昨夜,工地挖出来一个古墓,没有发现什么,人很多,突然有个金属状小物品落在在一个人衣服里!转眼这个人就消失在...
    公子召阅读 2,405评论 4 6
  • 养生这件事一直觉得是老年人才应该关注的,与我无关,然而现实告诉我,养生这件事还真的不分年龄。 前段日子,连续几天吃...
    素己阅读 4,549评论 2 5