C语言中return的使用?高手帮帮忙啊~~

voidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=1;... void fun(int a,int b)
{ int t;
t=a; a=b; b=t;
}
main()
{int c[10]={1,2,3,4,5,6,7,8,9,0},i;
for(i=1;i<10;i+=2) fun(c[i],c[i+1]);
for(i=0;i<10;i++) printf("%d",c[i]);
printf("\n");
运行结果:1,2.3,4,5,6,7,8,9,0,

void fun(inta[],int n)
{ int i,t;
for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{int k[10]={1,2,3,4,5,6,7,8,9,10},i;
fun(k,5);
for(i=2;i<8;i++) printf("%d",k[i]);
printf("\n");
}
运行结果是 321678

为什么第一个程序调用的函数没有返回,第二个却返回了?????、

请高手解释下原因和return的用法!
什么时候返回什么时候又不返回呢?
展开
 我来答
L_o_o_n_i_e
2010-09-17 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5036万
展开全部
这同return语句的返回不是一回事。

void fun(int a[],int n) 的参数1相当指针 *a;
fun(k,5); 调用时的k 是数组k的首地址
运算结果,通过参数传回来。

void fun(int a,int b)
只能把数值传入函数,不能把结果数值带回来。

不是 void 的函数,才需要 return语句,调用时,函数作为表达式,写在赋值号右边,表达式的值,等于return值。

void fun(int *a,int *b)
{ int t;
t= *a; *a= *b; *b=t;
}
才能带回交换结果。
调用语句要用地址 fun(&c[i],&c[i+1]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_fmlyht
2010-09-17 · TA获得超过2359个赞
知道大有可为答主
回答量:2398
采纳率:0%
帮助的人:1809万
展开全部
1.
这就是值传递和引用传递的不同。
函数的参数传递是通过堆栈进行的,在函数返回时,将被丢弃,而不管他们是什么方式传递的。这就是为什么只能实参传形参,而不能反过来。但是,通过这些参数,对其他区域的修改将会被保留。所谓的引用传递就是通过传递来的参数操作其他区域的数据,而不是参数本身!
如果你学过汇编语言,了解C调用约定,这个问题很容易理解!
具体来说:
void fun(int a,int b)
{ int t;
t=a; a=b; b=t;
}
什么都不做,因为参数a,b,局部变量t,都在堆栈中,在函数返回时,他们都会被丢弃。
void fun(int a[],int n)
{ int i,t;
for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
参数a,n,局部变量i,t,在堆栈中,a[i]则不是,函数返回后,堆栈中的a,n,i,t被丢弃,对a[i]修改则被保留
2.
return的用法很简单,你可以使用return函数/return语句
return <返回值>;
return(<返回值>);
返回值的类型必须与函数声明和定义一致
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jw5781408
2010-09-17 · TA获得超过111个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:141万
展开全部
函数传参分 值传递 和 地址传递
值传递不会改变参数的值
void fun(int a,int b)
{ int t;
t=a; a=b; b=t;
}
fun(c[i],c[i+1]);这个函数不会对数组c[10]的值进行更改
void fun(inta[],int n)
{ int i,t;
for(i=0;i<n/2;i++) {t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
这个函数传入的是地址
void fun(int a[],int n)相当于void fun(int *a,int n)
(k就是k[10]的首地址 是int型指针即int *)
所以k[10]的内容会被更改
关于值传递和地址传递 你可以参考http://blog.csdn.net/sdfgh2046/archive/2010/06/04/5648122.aspx
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式