c语言中函数形参与实参的区别与联系

c语言中函数形参与实参的区别与联系,第1张

形参与实参在本质上是两个不同的东西。

比如函数f(x)=y=x²+2x,x就是函数的参数,我们用c语言把它写出来就是:

float

f(float

x)

{

float

y;

y=xx+2x;

return

y;

}

你看看与f(x)=y=x²+2x何其相似!

当我们要计算f(2)的函数值时,就让x=2,得到y=8,即f(2)=8。

在c语言这里,我们就把x叫“形参”,把2叫“实参”,可以看出它们是多么不同了吧!

如果有一个变量a=1,也可以计算f(a)=2,其实在计算时,把a的值赋给了x。a是实参,x仍然是形参。计算前后a的值并没有变化。

如程序中调用:c=f(a)+f(2),结果得到c=10。

值得注意的是,往往实参与形参使用同一个字母,比如都用x,但是这两个x是不同的变量,实参x把值赋给形参x后,就没有实参的什么事了,在函数中形参x值的变化也不会影响实参x的值。

说起它们的相同之处,就是它们的变量类型是一样的;说起它们的联系,就是有一次实参对形参的赋值;说起它们的区别,则是两个不同的变量。

啰嗦很多,不知是否说清,若有不明之处,请留言。

在函数或过程中定义的参数叫形参,调用函数时传入的参数叫实参。

在VB中,传递变量就是传地址,除非指定传值,即byval

过程或函数中的形式参数没有特别指明是传址方式还是传值方式,隐含的是传址。实际调用时,还要根据实参的形式,才能确定是传值还是传址的数据传送方式。若实参为常量或表达式,则为传值的传递方式;若实参是变量名或数组名,则为传址的传递方式。

形参和实参类型可以不一样,但同时可能引起类型不匹配错误。

函数调用时,将实参的值传递给形参,系统首先会自动隐式地把实参的值的类型转换为形参的类型,然后再赋值给形参。

实参和形参在数量上,类型上、顺序上应严格一致,否则就可能发生类型不匹配的错误。变量或属性类型错误。例如,一个整型值的变量不能赋给字符串值,除非整个字符串可识别成为整型。尽量在兼容的数据类型间赋值。例如,Integer 可以被赋给 Long,Single 可以被赋给 Double。

扩展资料:

形参和实参的特点:

1、形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

2、实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。

3、实参和形参在数量上,类型上、顺序上应严格一致,否则就会发生类型不匹配的错误。

4、在一般传值调用的机制中只能把实参传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参值发生改变,而实参中的值不会变化。而在引用调用的机制当中是将实参引用的地址传递给了形参,所以任何发生在形参上的改变实际上也发生在实参变量上。

-形参

-强制类型转换

-类型不匹配

函数

实参

形参

之间的数据传递方式是(

值传递)传递方式,在C语言中,数据传递方式有值传递和引用传递,值传递:传值,实际是把实参的值赋值给行参,相当于copy。

那么对行参的修改,不会影响实参的值

。引用传递:

实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都指向同一个对象,因此对形参的修改会影响到实参。

扩展资料

传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。

引用传递是将变量的内存地址传递给方法,方法 *** 作变量时会找到保存在该地址的变量,对其进行 *** 作。会对原变量造成影响。可以将一个变量通过引用传递给函数,这样该函数就可以修改其参数的值。

参考资料:

—引用传递

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12188490.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存