分类：电脑/网络-程序设计-C/C++
问题：C语言的一道题目10.有以下程序voidf(intx,inty) 
10.有以下 void f(int x,int y) { int t; if(x<y){ t=x; x=y; y=t; } } main() { int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf("%d,%d,%d\n",a,b,c); } 执行后输出的结果是 
回答：结果是4,3,5,我之前答过一次,转为评论了.哈哈,因为我没有说明白.
为什么结果是原数4,3,5呢?因为a,b,c的值根本没发生变化,请注意,f函数是按值传递的参数而不是传递的指针.该题的考点也就在这里.
f函数只对x,y进行了交换,不会影响a,b,c.因为x,y只是f函数的局部变量.
如果要使f函数能操作函数以外的变量的话,就要传递指针,下面我给出交换abc的正确程序:
void f(int* x,int* y) 
{ int t; 
if(*x<*y){ t=*x; *x=*y; *y=t; } 
} 
main() 
{ int a=4,b=3,c=5; 
f(&a,&b); f(&a,&c); f(&b,&c); 
printf("%d,%d,%d\n",a,b,c); 
}