这个互换值的方法为什么不成功?


#include<stdio.h>

void f(int x,int y){
    int t;
    if(x<y){
        t=x;
        x=y;
        y=t;
    }
}
int  main()
{
    int a=2,b=3;
    f(a,b);
    printf("a=%d,b=%d\n",a,b);
}

#include<stdio.h>
void f(int& x,int& y){
    int t;
    if(x<y){
        t=x;
        x=y;
        y=t;
    }
}
int  main()
{
    int a=2,b=3;
    f(a,b);
    printf("a=%d,b=%d\n",a,b);
}

img


改成这样就可以了,&叫引用
如有帮助请采纳一下哦!谢谢!

值没有传到main里,得改成指针的方法
这是一种方法


#include<stdio.h>
void f(int *x,int *y)
{
    int t;
    if(*x<*y)
    {
        t=*x;
        *x=*y;
        *y=t;
    }
}
int  main()
{
    int a=2,b=3;
    f(&a,&b);
    printf("a=%d,b=%d\n",a,b);
}


你把a,b传给了函数中的x,y, x,y的值互换了,但a,b么有互换