void fun (int x: int y) { int tmp: tmp=x; x=y; y=tmp; return; } 问fun函数的功能是什么???

如题所述

1.首先,你的这个函数中的两个冒号是不对的,第一个冒号应该改成逗号,第二个冒号应该改成分号,即:
void fun (int x, int y) { int tmp; tmp=x; x=y; y=tmp; return; }

2.其次,这是一个用户自定义的、交换两变量值的函数,即用tmp作为一个媒介,将形式参数x和y的值对换。

3.再次,什么是形式参数和实际参数。
形式参数简称形参,即 在定义函数时 函数名后面括号中的变量名;
实际参数简称实参,即 在主函数(main函数)中调用一个函数时,函数名后面括号中的参数(可以是表达式哦)。

4.C语言中,实参向形参的数据传递是“值传递”,即单向传递,只能由实参传给形参,而不能由形参传回给实参。比如,我在main函数中定义了两个变量并赋以初值:
int a=3, b=6;
然后在声明过楼主所定义的void fun (int x, int y)函数之后,调用该函数:
fun(a, b);
printf("a=%d, b=%d\n", a, b);
输出结果为:
a=3, b=6
即a和b的值并没有发生变化,也就是说,引用的fun函数做了无用功,只是把内部形参的x和y的值对换了,对换完后的结果是无法反应到实参上去的。

5.特例:
数组名作函数参数。
(1)数组名作函数参数时,应在主调函数和被调函数中分别定义数组;
(2)数组类型应一致;
(3)形参数组指定的大小不起任何作用,因为这时的传递已经不是“值传递”而是“地址传递”,形参数组元素和实参数组元素具有同一地址,【重点来了】这样就打破了上面所说的调用函数做无用功的局限,形参数组元素值变了,实参数组元素值也会跟着变。
(4)形参数组可不指定大小,但定义数组时数组名后面不能缺方括号,也就是说,方括号里面什么数字都没有是可以的,但是连方括号都木有是不行滴!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-04
在函数内把x,y的值交换,但是仅在fun函数内,对于调用fun函数的函数传入的参数并没有交换。
如int a = 1; int b = 2; fun(a,b);这么运行之后,a还是等于1的,b还是等于2的,但是在fun函数内,开始x=1,y=2,运行到return之前,x=2,y=1
第2个回答  2012-06-04
交换传给这个fun的两个参数,但是因为你所用的是值传递,你改变的是你的形参,并没有改变你的实参。