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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dsanmux/article/details/85692782

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

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) 

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

猜你喜欢

转载自blog.csdn.net/dsanmux/article/details/85692782