【⛔C语言“数组名”,不得不说的秘密!⛔】c语言“数组名字“初探

26 篇文章 5 订阅

 代码:

#include<stdio.h>
int main()
{
    int  a[10] = {0};

    printf("a:    %p     a + 1:     %p\n",a,a + 1);
    printf("&a:   %p     &a + 1:    %p\n",&a,&a + 1);
    printf("&a[0]:%p     &a[0] + 1: %p\n",&a[0],&a[0] + 1);

    return 0;      
}

结果:

a:    0x7ffc2190a8b0     a + 1:     0x7ffc2190a8b4
&a:   0x7ffc2190a8b0     &a + 1:    0x7ffc2190a8d8
&a[0]:0x7ffc2190a8b0     &a[0] + 1: 0x7ffc2190a8b4

结论:

数组名a表示的是“数组首个元素的地址,而首个元素是int类型”,&a指的是int a[10]这个数组的地址,而这个数组的长度是40个字节,所以&a + 1比a大了40。

可以发现a 与 &a[0]是等价的:在很多用到数组名字的地方,编译器都会自动地将其替换为一个指向数组首元素的指针

扩展:

1.本文以int数组为例,字符串数组等其他类型数组同样适用此特性;

2.数组名称作为形参传进去函数时,退化成指针使用。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谁吃薄荷糖

你获得知识,我获得财富,双赢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值