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的两个参数,但是因为你所用的是值传递,你改变的是你的形参,并没有改变你的实参。

...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.再次...

c语言,输入三个不同的数字,按从从大到小输出
输出时反序z,y,x就行了,简洁完整并通过了调试的代码如下:#include<stdio.h> int main(){ int x,y,z,t;printf("请输入三个不同的数字,每输入一个数字用逗号隔开\\n");scanf("%d,%d,%d",&x,&y,&z);if(x>y) {t=x;x=y;y=t;} if(x>z) {t=x;x=z;z=t;} if(y>z) ...

swap函数的代码问题
int tmp = b; tmp不能加引用。改正后能达到目的,因为a,b是引用传递,可以直接对原地址内容进行修改

int fun(int x[ ],int n) { static int sum=0,i;
非静态函数可以在另一个文件中直接引用,甚至不必使用extern声明 下面两个文件的例子说明使用static声明的函数不能被另一个文件引用:printf("hello from fun.\\n");}int main(void){ fun();fun1();return 0;}\/* file2.c *\/#include <stdio.h>static void fun1(void){ printf("hello from ...

C语言中,参数“...”是什么意思
这个是可变参数技术,就是表示后面还可以任意个可选的参数

c语言退出整个程序或函数的命令是什么?
c语言退出整个程序或函数的命令是return、goto 、break 、break。1、return 返回;return 表示从被调用函数返回主调函数继续执行,返回时可附带一个返回值,由return后面的参数设定。2、goto 无条件跳转;goto语句也称作无条件转移语句,其一般格式为goto语句标号:其中语句标号是按照标识符规定书写的符号,...

什么是函数的参数传递呢??它有几种呢?
函数参数传递有以下三种:一. 值传递 1. 用值传递方式,实际上是把实参的内容复制到形参中,实参和形参是存放在两个不同的内存空间中。在函数体内对形参的一切修改对实参都没有影响;2. 如果形参是类的对象,利用值传递的话每次都要调用类的构造函数构造对象,效率比较低。二. 指针传递(地址传递)1...

帮忙两道C语言题:
\/\/1、计算x与y之间(包括x和y)奇数的和\/\/2013年4月2日14:46:19#include<stdio.h>int main(){void sort( int *px, int *py );bool isji( int n );int fun( int x, int y );int x, y,*px,*py,sum;px = &x;py = &y;printf("Input:\\n");scanf("%d%d",&x,&y);...

matlab里feval和fun引用的问题
定义函数的时候fun只是形参名而已,不要加引号的,加了就变成字符串常数了。到调用的时候再输入实参,字符串就输字符串,矩阵就输矩阵。

【千锋教育C语言程序设计】第3章 函数
函数声明可以放在主调函数前面,也可以放在主调函数后面,但需要在主调函数前声明自定义函数。有参函数的实现需要参数,例如执行相加运算的函数,定义代码如下:`int add(int x, int y){...}`。调用时传递整数作为参数,如`add(23, 11);`。形参是函数定义中的参数,实参是在调用时传递的参数。形...

相似回答