c语言语法基础----数组名的含义

一、对于一维数组 :int a[5];

a就是数组名:

        a做左值时表示整个数组的所有空间(10×4=40字节)因为C语言规定数组操作时只能独立单个操作其中的元素,不能整体操作数组,所以a不能做左值;a做右值时等同于&a[0],表示数组首元素的首地址;

(首元素就是数组的第0个元素,也就是a[0])

(首地址就是起始地址,就是4个字节中最开始第一个字节的地址)

a[k]表示数组的首元素:

        也就是数组的第k个元素。做左值时表示数组第k个元素对应的内存空间(相当于一个变量名,可以对其赋值);做右值时表示数组第k个元素的值(也就是数组第k个元素对应的内存空间中存储的那个数)

&a就表示对数组名a取地址:

        字面意思来看就应该是数组的地址。&a不能做左值(&a实质是一个常量,不是变量因此不能赋值,所以自然不能做左值。);&a做右值时表示整个数组的首地址。

&a[0]表示数组第0个元素的首地址:

        先搞清楚[]和&的优先级:[ ]的优先级要高于&,所以a先和[ ]结合再取地址。做左值时表示数组首元素对应的内存空间,做右值时表示数组首元素的值(也就是数组首元素对应的内存空间中存储的那个数值)。做右值时&a[0]等同于a。

总结:

    1:&a和a做右值时的区别:&a是整个数组的首地址,而a是数组首元素的首地址。

这两个在数字上是相等的,但是意义不相同。意义不相同会导致他们在参与运算的时候有不同的表现。

    2:a和&a[0]做右值时意义和数值完全相同,完全可以互相替代。

    3:&a是常量,不能做左值。

    4:a做左值代表整个数组所有空间,所以a不能做左值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值