C语言数组名a和&a小结

int  a[5] = {1,2,3,4,5};

数组和指针是C语言的精髓也是它的难点。特别是对于数组名a以及&a,很多同学一直都搞不清楚。今天就说说我自己的理解,希望能对大家有所帮助。

a表示的是a[0]的起始地址,而&a表示的整个数组的起始地址。只是恰好他们表示的地址相等,但并不能说他们两个就完全相等。就像浙江省的省政府在杭州,而杭州市的市政府也在杭州,但不能说浙江省政府就等于杭州市政府。

为了方便理解,我们来对数组进行运算。假设a的地址是0x00ffff00,那么a+1和&a+1分别是多少。

因为a表示的是a[0]的首地址,所以a+1加的就是一个a[0]元素的大小,即一个int的大小4,所以a+1为0x00ffff04

&a代表的是整个数组的首地址,所以&a+1加的就是整个数组的大小,即4*5=20,所以&a+1为0x00ffff14

其实他们完全是两回事,只不过刚好数值上相等而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值