#include <stdio.h>
int change(int a, int b)
{
int tmp =a;
a=b;
b=tmp;
return a,b;
}
int main()
{
int a=5;
int b=3;
change(a,b);
printf("num a =%d\n num b =%d\n",a,b);
return 0;
}
#include <stdio.h>
int change(int a, int b)
{
int tmp =a;
a=b;
b=tmp;
return a,b;
}
int main()
{
int a=5;
int b=3;
change(a,b);
printf("num a =%d\n num b =%d\n",a,b);
return 0;
}
因为你这样写只是把 a,b 的值复制一份传进去 change() 函数,并不会改变 a b 的值,因为 change() 函数里面的 a b 的作用域只在这个函数,这个函数执行完它们就被消灭了,不会影响到主函数里面 a b 的值,只有传地址进去才会改变
比如这样
#include <stdio.h>
void change(int* a, int* b)
{
int tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
int a=5;
int b=3;
change(&a,&b);
printf("num a =%d\n num b =%d\n",a,b);
return 0;
}