我举个例子吧
xu(int a,int b)
{int temp;
if(a>b)
temp=a;a=b;b=temp;
}
main()
{int m=4;
int n=2;
xu(m,n);
printf("%d,%d",m,n);
这个很明显是一个值传递,但是当我改了一些东西以后就不一样了
请看:
xu(int a,int b)
{int temp;
if(a>b)
temp=a;a=b;b=temp;
return a,b;
}
main()
{int m=4;
int n=2;
int s;
s=xu(m,n);
printf("%d,%d",m,n);
这个时候值传递似乎变成了地址传递,其实并不是这样,要说谁在搞怪,那就是函数值,他把被调函数的值又
返回给了s,所以似乎变成了地址传递
但是你要注意的是这种特殊的函数返回值,也就是空类型void;
看程序:
void xu(int a,int b)
{int temp;
if(a>b)
temp=a;a=b;b=temp;
}
main()
{int m=4;
int n=2;
xu(m,n);
printf("%d,%d",m,n);
这个时候你需要注意的是,首先不能用return,因为无返回值,又怎么会有return,其次是函数调用的时候只能用普通的调用,而不能用表达式,这个是因为表达式他是把右值赋给左值,无右值又怎么会赋给左值呢?
希望我费了这么多口水大家能明白!