操作系统性能追踪C语言

三分钟刷道题——指针

2017-06-26  本文已影响18人  b5c1a1cecdbe

输出是什么?(华为面试题)

#include

main()

{

int b=3;

int arr[]={6,7,8,9,10};

int *ptr=arr;

*(ptr++)+=123;

printf("%d,%d\n",*ptr,*(++ptr));

}

复制代码


题目分析:

这道题关键是输出语句中参数的执行顺序。

刚开始ptr指针初始化,ptr指向 数组arr的首地址,也就是 arr[0]的位置。

然后*(ptr++)+=123一句,其实就是 *ptr=*ptr+123;ptr++;这两句,此时执行后ptr指向数组第二个元素arr[1]

最后一句输出语句,编译器一般按照从右到左的压栈顺序(涉及编译原理课程),因此先计算后面的++ptr,因此2项输出均为arr[2]即8。

知了堂C语言函数指针小结(经典案例解析)http://pan.baidu.com/s/1jIOdP1G

上一篇 下一篇

猜你喜欢

热点阅读