你分得清楚给函数传址时,arr,&arr[0],&arr的不同吗?

  • 第一种:arr这种是表示数组首元素的地址
  • 第二种:&arr[0]这种表示的和arr是一样的
  • 第三种:&arr这种表示的是整个数组的地址

结果我们可以看到前两个地址是符合预期的,但是第三个为什么也是一样的。不妨地址+1

我们发现前两个符合地址+4(+1*sizeof(int))字节,后面的却是加了40(+数组长度10*sizeof(int))字节,就是直接跳过了这个数组,也说明了&arr表示的是arr数组的地址.

  • 综上就是: 他们分别加一后,前两个是直接下个元素的地址,后一个是直接跳过这个数组后一个元素的首地址
  • 特例对于函数里面的取地址,通常是用arr,而这个也表示首元素的地址,但是有种情况不同,表示的是整个数组的地址,是sizeof(arr),如果我们做合理的分析,如果arr表示的是首元素的地址,那么就应该像strlen函数一样有特殊字符进行停止,但是这里没有,int,float类型更不用说有什么特殊的数字来暂停这个函数,因此传入的就是整个数组的地址而并没有对数组进行遍历。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值