有关C语言函数值返回的问题

当调用函数的类型为void时 到底什么时候才能返回调用的值呢 有点模糊 做题时总是搞不清 有时答案上又说形参的改变不影响实参的值 有时又说这是传值的过程不是传址 到底该怎么用呢
恳请各位帮忙详细解释一下 谢谢了~

我来帮你详细解释下吧:

形参:即形式参数,指的是函数定义时括号里的参数。如"void fun(int n){printf("%d",n);}"这里的n为形参;

实参:即实际参数,指的是调用函数时括号里的参数。如调用上面的函数语句"int n=99;fun(n);"这里的n为实参;

(上面两点楼主一定要清楚,不然下面的你该看不懂了~)

传值:只是单纯将实参的值赋值给形参,不改变实参的值。就如"a=b”,b赋值给a,当然不改变b的值;

传址:将实参存放的地址赋值给形参,这样,在函数里访问形参即相当于访问实参,所以会改变实参的值。就如"scanf("%d",&a)“中,a是个实参,把a的地址"&a"传递到scanf函数中,函数调用完毕后,会改变a的值;

返回值:如果返回类型为void,则函数无返回值,但在函数中可通过"return;"语句来结束函数运行。如若返回类型省略不写,则编译器默认返回类型为int型;

哪里不懂可追问:
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-23
1. void类型的函数是肯定不会有返回值的,因为void是空类型。凡是函数类型不是void的,都必须返回一个值。
2.传值是指将实参的数值复制给形参,形参、实参各自占用不同的存储单元,所以,形参不影响实参。传址是指将存放实参的内存地址传递给形参,这样形参就是一个指向实参的指针,从而通过改变形参指向的值,便是改变实参的值。
第2个回答  2011-03-23
传参数 用取地址 &,就可以改变了
func(int *aaa)
{
*aaa = 9;
}
main()
{
int bb = 0;

func(&bb);

printf(“%d\n”,bb);
}
func会改变BB的值
第3个回答  2011-03-24
当作函数形参时(如fun(int g)),形参在函数中的任何计算都并未改变实参的值,我们叫做单向传递,实际上,形参在内存中又会分配地址,与实参不同,所以传递只是将值传了过去,当形参改变时只是将形参地址上的数值改变了,并未改动实参地址所指向的数值。而当是作地址传时(如fun(int *g)),将实参地址也传了过去,也就是他们都是指同一个地址,当地址上的值在函数中改变时,他在函数外也改变了,因为都是同一个内存地址上的值,类似于把值传了回去,我们叫做双向传递。
相似回答