值传递形参不影响实参,那值传递的作用是啥?

神奇小Mo


形参在函数定义中使用,只能在函数内部使用,离开函数后就不能使用了。形参相当于函数中的一个局部变量。

实参在函数调用中使用,作用相当于给形参赋值用的,赋完值就跟这个函数没关系了。

"形参"和"实参"仅仅从名字上来看的话是不好理解它们存在的意义。它俩出现在函数的定义和调用中,也就是说他俩是为函数服务的。那就从函数的生命周期来分析它俩为何这样存在。

正常情况下,函数是存储在ROM中。当函数被调用(运行的时候),他就会被转入到RAM中运行。任何一个函数被调用的时候都是为了实现一定的运算功能。一般的功能都需要有运算数据(也就是实参的数据),运算完成后有运算结果(也就是返回值)。那函数在运行的时候,为什么不直接操作实参,而是要把实参数据传递给形参,函数再去操作形参呢?

那是为了"低耦合性",程序编程思想上有这么一句话"低耦合,高内聚"。意思就是说函数和函数之间的关系尽量简单、明确,不要有暧昧关系。这样做就是为了提高程序的可阅读性,可维护性。函数在运行的时候申请一块RAM区域,在其中也包括形参的空间,并把实参的数据给到形参。

函数也只是操作形参,不操作实参,这样就和实参扯清关系了,等到函数死掉(从RAM中释放)的时候,就不需要再管实参的关系了,可以直接把函数调用时申请的RAM全部清空,简单高效,同时返回值也与此类似。

形参是函数的入口,返回值是函数的出口。函数的运行只用自己内部的空间,跟其它任何数据都没关系,大大提高了"低耦合性"。这就是形参和实参存在的意义。


琪浩电子攻城狮


传参的作用可不一定就是为了改变这个参数的值,是由很多其他用处的,例如举个最简单的例子。。。

如果你需要一个求和运算,你可以写一个test(int a, int b){}的方法,用的时候调用这个方法,传的值是a和b可是运算完了a和b的值没变,但是返了两个值的和,正是我想要的。



通信人的自我修养


首先我们要明白,在函数调用的过程中,出现两种参数。

1.实际参数就是在调用函数的时候给函数传递数值的参数。

2.形式参数顾名思义就是在函数定义的时候定义的参数。

值传递的过程就是将实际参数传递给形式参数的过程,传递的是实际参数的复制后的结果,同时不会改变实际参数的数值,形式参数得到数值后开始执行函数的算法内容,执行完成后释放形参内容。


工控汇


值传递和引用传递的本质是,传递的内容调用者还需不需要。

值传递可以认为是函数的入参。函数内部不管怎么处理这个入参,调用者都不关心,调用者不再需要这个数据,也感知不到这个数据。

引用传递可以认为既是入参也是出参。函数内部可以读引用的数据,也可以修改,如果修改了调用者是可以感知到的。


分享到:


相關文章: