三分钟刷道题——指针

作者: b5c1a1cecdbe | 来源:发表于2017-06-26 10:27 被阅读18次

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

#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

相关文章

网友评论

    本文标题:三分钟刷道题——指针

    本文链接:https://www.haomeiwen.com/subject/homdcxtx.html