数组名a、数组名取地址&a、数组首地址&a[0]、数组指针*p

本文链接:https://blog.csdn.net/loongkingwhat/article/details/78910921

 

数组和指针向来就是傻傻分不清,当他们一起出现的时候就更加懵逼。
1 解析不同变量之间的区别:
数组名a:
数组名可以作为数组第一个元素的指针。我们由数组和指针的关系知道,a代表这个地址数值,它相当于一个指针,指向第一个元素(&a[0]),即指向数组的首地址。数组中的其他元素可以通过a的位移得到,此时的进阶是以数组中单个的元素类型为单位的,即a+i= & a[i]。
 
数组名取地址&a:
对于一个普通的变量b,&b是指用取地址符号取得变量b的存放地址;a在内存中没有分配空间,只对数组a的各个元素分配了存储空间,此处数组名字a显然不是普通的变量,&a也不代表所取a的存储地址。
&a在数值上等于&a[0],也等于a。此时,&a数值上等于整个数组的起始位置地址,含义上代表整个数组所占内存的大小,因为它的进阶单位是整个数组的字节长度,(&a + 1)等于的是数组结束之后的下一段的起始位置地址。
 
数组首地址&a[0]:
这个就是取地址的最直接的应用,a[0]在内存中实际分类存储空间,而&a[0]就是取该存储空间的地址,这与对于任意满足范围的i,&a[i]就是取第i个元素的存储地址一样。
 
数组指针*p:
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。经常用取地址符&将某个变量的地址赋给它,同时常常对指针用取值符号*取得对应地址的内容。
暂时还没做指针相关的总结,贴一篇不错的博客。让你不再害怕指针——C指针详解(经典,非常详细)大佬的这篇博客,内容和它的标题一样经典和详细,非常值得参考。

 

 

 

 

 

posted on 2019-10-12 21:29  滴水石川的小白  阅读(404)  评论(0编辑  收藏  举报

导航