关于C语言中指针运算以及参数入栈顺序的面试题

来源:互联网 发布:淘宝店店铺招牌图片 编辑:程序博客网 时间:2024/06/05 02:10

关于C语言中指针运算以及参数入栈顺序的面试题

代码如下:

#include <stdio.h>int main(){int b =3;int arr[] = {6, 7, 8, 9, 10};int *ptr = arr;*(ptr++) += 123;printf("%d, %d\n"m *ptr, *(++ptr));return 0;}


上面的代码输出为:8,8。


分析如下:

对于语句:

*(ptr++) += 123;


可以分为如下:

*ptr += 123;

ptr++;


所以,此时ptr指向的是数组中的第二个元素7.


而对于printf()语句的执行,由于参数入栈是从右到左的,所以第一个如下的是(++ptr),所以,ptr指向了数组中第三个元素8,然后是ptr入栈,此时ptr已进行了++ptr运行了。

所以printf输出8, 8.


原创粉丝点击