c语言中的值传递是怎么回事?

定义:值传递只能由实参传给形参,而不能由形参返回来给实参。比如,主调函数fun(x,x+=2) 实参 被调函数fun(int a,int b)形参是把x的值传给a,x+=2的值传给b吗?那被调函数执行完后的值返回给主函数吗?还是有return就有返回值,没有就不返回吗?如果不返回给主函数,那设置被调函数有什么意义?

实参的值传给了形参,形参可以看着是被调函数中的局部变量被调函数可有返回值也可以没有有返回值用return返回。例如int fun(int a,int b){ int c; c=a+b; return c;}主函数调用:int a,b,c;a=1,b=2;c=fun(a,b);没有返回值的函数通常形参都是指针变量,那样可以直接改变变量的值,例如fun(int *a){ *a=5;}主函数调用int b=1;fun(&b);这里调用fun后,b的值就变为5了而如果你的函数是fun(int a)这样b的值是不会变化的,这要你去理解指针
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-27

1、C语言中函数参数的传递有两种方式:传值与传地址。
传值就是将实参的值传递给形参,使得形参的值与实参一样。
传地址就是将实参所在内存单元的地址传递给形参,使得形参指向实参所在的内存地址。

2、举例说明如下:

#include<stdio.h>
int fun1(int a, int b);
{
    return a>b ? a : b;
}
int fun2(int *a, int *b);
{
    return *a>*b ? *a : *b;
}
void main()
{
    int x=5, y=3;
    int z1 = fun1(x, y);   // 传值调用方式
    int z2 = fun2(&x, &y); // 传地址调用方式
}

本回答被网友采纳
第2个回答  2013-12-05
是把x的值传给a,x+=2的值传给b吗?
是的

那被调函数执行完后的值返回给主函数吗?
看你怎么返回,比如return就是返回给主函数

还是有return就有返回值,没有就不返回吗?
可以这么认为,其实不是

如果不返回给主函数,那设置被调函数有什么意义?
这就类似pascal里面的过程,没有返回,但执行了操作,好比你寄的平信,虽然不知道对方有没有收到,但至少让邮局忙乎了一阵。有些函数重在处理一些数据等,而不在乎返回,比如 srand 函数没有返回,但它设置了随机种子
相似回答