回 帖 发 新 帖 刷新版面

主题:c 求详解

int arr[]={6,7,8,9,10};
int *ptr=arr;
*(ptr++)+=123;
printf("%d,%d",*ptr,*(++ptr));


求详解。答案是(8,8)
我将最后一行改为printf("%d,%d",*ptr,*(ptr+1));
输出结果是(7,8)


就是最后一句不理解,请详解,谢

回复列表 (共4个回复)

沙发

我请教了一下我的同学,说这是栈的方式,先计算*(++ptr),后计算*(ptr),这样就说的通了。不知是不是这样,希望路过的能给指正一下啊

板凳

这样的情况已经出现了很多次了

是函数参数入栈方式导致了这样的结果

3 楼

从右向左

4 楼

多谢各位指导,学习了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册