指针传参的函数写在cout中失去了指针传参的特性?

今天一个同学问我一个问题,就是这个指针传参的函数调用时写在cout中的问题,

    #include<iostream>
    using namespace std;
    int f(int *a,int *b,int *c)
    {
        int t=0;
        if(*a<*b){t=*a,*a=*b,*b=t;}
        if(*a<*c){t=*a,*a=*c,*c=t;}
        if(*b<*c){t=*b,*b=*c,*c=t;}
        return *a;
    }
    int main()
    {
        int x,y,z;
        cin>>x>>y>>z;
        cout<<f(&x,&y,&z)<<" "<<x<<" "<<y<<" "<<z;
        return 0;
    }

这个函数最终运行的结果是3 1 2 3 ,
因此我怀疑是指针传参没有发挥自己的特点
有哪位大哥讲解一下啊

2个回答

参考了谭浩强的一本书,说的是cout是右结合的,既在cout中存在运算时先进行右边的运算,输出时从左往右输出

执行顺序的问题, 不能把cout和f函数调用写一行,否则可能f后执行。

caozhy
贵阳老马马善福专门编写代码的老马就是我! 回复微风丶a_Sen: 挺无耻的,义务回答你的问题,居然还采纳自己作弊。
5 个月之前 回复
qq_43066253
微风丶a_Sen 谢谢,
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!