嵌入式面试题C语言(一)数组一道面试题

这道题在工作中实际编程很少能遇到,至少我没有涉及到,但是低于数组指针其实是一种深入理解或者说另一种思考的角度,这是一道面试题:

int a[] = {1,2,3,4,5,6,7};
1.printf(“a[5] is %d\n”, a[5]);
2.printf(“5[a] is %d\n”, 5[a]);
这就是考题 这里直接给出结果 6 ,6

在我试验输出这个结果的时候其实我还是不理解,按照我的想法1输出6正常,但是2不应该啊,我当时想a是数据地址那么5[a],实际应该是一个不确定的内存数据才对,然后我再网上找到类似这道题解释如下:

数组a[5],可以解析为*(a+5),也就是基址 + 偏移量(这样理解的话a[5]和5[a]实际是一样)

 a[5]  ==>  *(a+5)
              ||
 5[a]  ==>  *(5+a) 

我当时是从数组角度来理解这个问题,实际要是结合指针地址角度结合理解才是本质

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值