关于数组名是数组第一个元素的地址的理解

      在看小甲鱼的C语言教学视频中的指针与数组的过程中有一段话我很难理解,“数组名是数组第一个元素的地址”,我纠结的是数组名字为什么会是地址,a[ ]和地址的那一大串我实在是无法将他们划上等号。

 于是我列下了以下的代码,申明一个数组,查看a的地址。

得到的结果如下:

 

  对于这两者的差别,我查阅了论坛的资料。有一大佬解释的通俗易懂。下面是原文链接:(3条消息) C语言基础知识:a a[0] &a &a[0]_aoxiang_ywj的博客-CSDN博客

  这里我将原文复制下来方便大家阅读。

(1) a,表示数组名

     a做左值时表示整个数组的所有空间(10×4=40字节)【又因为C语言规定数组操作时要独立单个操作,不能整体操作数组,N      所以a不能做左值】;
     a做右值表示数组首元素的首地址    (首元素首地址就是数组的第0个元素的起始地址,也就是a[0]的起始地址)。

(2) &a,表示数组名a取地址,字面意思是数组的地址(数组的地址就是数组的首地址(也叫数组的起始地址))

      &a不能做左值(&a实质是一个常量,不是变量因此不能赋值,所以自然不能做左值。);
      &a做右值时表示【整个数组的首地址】

所以可以知道这里打印的第一条是数组首元素的首地址。第二条打印出的是整个数组的首地址。

虽然结果相同,但意义却不同。

    再往下看,将内容拓展:

 这里加多了查看数组元素的代码来验证上面的说法。所得结果如下:

 

 确实验证了数组的首元素地址&a[0]和&a一致,顺便查看了第二个元素a[1]的地址(虽然有点多此一举哈哈)。

   对于"数组名是数组的第一个元素地址”或许改为“数组名的地址是数组的第一个元素地址”要更加方便理解。

  • 10
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值