数组名与数组名的地址

 假设我们定义一个数组char a[16]; 那么a与&a分别代表什么呢?它们完全一样吗?

      a其实代表的是数组中首元素的地址,即a[0]的地址&a代表的是整个数组的起始地址。我们做个测试就可以很容易知道。

      我们分别测试a  a+1  &a   &a+1这四个值,它们分别为:

a 0x0012fcc8
a+1 0x0012fcc9
&a 0x0012fcc8
&a+1 0x0012fcd8

      a和&a的值虽然完全一样,但是他们的含义是不同的。


如果有char a[10];,则a是这10个字符的第一个字符的地址,&a是这10个字符组成的字符串的首地址,但二者的“值”一样的,因为10个人站在那里,第一个人的地方也是这一排人排头的地方。区别在于:a+1是第二个元素的地址,而&a+1是第二排的首地址,跑到a[9]后面的那个元素的地址上了

char stra[10]="hello";

test6(stra);

等价于

test6(&stra);

也就是说当数组名被当做参数传递时,数组名等价于&数组名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值