C语言 数组与指针

数组名可以当作指针来用的。 结论:

数组名可以当作指针(指针常量)来用; 数组名当指针用时,数组名可以看作是指向数组第一个元素的指针常量 如: 已经 a 是一个数组名(任何类型的数组,任何维度的数组,都可以), a当指针用时, &a[0]

数组名既可以代表整个数组,又可以当作指针用, 那它什么时候代表整个数组,什么时候当指针用呢? 假设a是数组或 (1) 在如下情况下,a代表整个数组 sizeof(a) 求数组a的所占的字节数,此时a代表整个数组 typeof(a) 求a的类型时,此时a代表整个数组 &a a的地址,此时a代表整个数组,整个数组的地址 (2) 其他情况下,当指针用 p = a; //a当指针用, why? 不能把整个数组赋值给其他对象。 // a当作指针 p = a ; => p = &a[0];

a + 1  ; //a当作指针用,why? 整个数组不能整体 +1
        a + 1 => &a[0] + 1 => &a[1]
...

例子:

    int a[10]; 
​
    a + 1   //在这个表达式中,数组名 a当作指针用
            // a + 1 => &a[0] + 1 => &a[1]
    a + i //
            a + i => &a[0] + i => &a[i]
​
    ...
    *(a+i) => *(&a[0] +i) => *&a[i] => a[i]

结论: *(p + i) <=> p[i], when i >= 0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值