数组名是什么?

        学过C语言的朋友想必对数组都不陌生,数组就是一组相同元素的集合。那数组名代表着什么呢?今天我们来深度了解一下数组名这点事。

数组名是数组首元素地址

为了验证这一结论,我们在编译器上用打印地址的形式输出数组名和数组首元素地址。

可以发现打印结果是一摸一样的。所以在函数接收数组的时候,我们也可以使用指针的方式。

取地址数组名是数组的地址

取地址数组名是数组的地址这句话是什么意思呢?我们用同样的方式打印数组名,但是在数组名前加一个取地址符号。

两者看似没差别,但是当我们在对它们进行+1的时候发现&arr[0]与&arr[0]+1之间差了4个字节,也就是1个int,而&arr与&arr+1之间差了40个字节,也就是10个int。

在sizeof中数组名代表整个数组

在x86的情况下一个地址的大小为4个字节,但打印sizeof(arr)的值确实40,所以数组名在sizeof中代表整个数组。

ps:数组越界的检查是抽查,编译器不一定检查得出来;动态内存的越界一般是在释放空间的时候检查

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值