在c++中,什么是形参,什么是实参。有何区别吗

如题所述

形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

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

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

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

4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-02

    实参和形参被分配的地址不同。可以这样比喻,实参是一间别墅,而形参是另一间别墅。实参里的东西被复制了一份搬到了形参里面,而形参这件别墅里面的东西被扔了或者添加了新的东西是不会对实参这件别墅造成影响的。

    如果不用指针或者引用,实参只能向形参里面传递东西(值),就好比上面的举例,实参的东西能拷贝一份搬到形参里面,而形参里面的东西(值)被改变却不会反向传递,就是形参里面的东西不会覆盖实参的东西(值)。

    简单地说就是实参和形参操作的地址不同,如果需要得到改变的值,一般都是用return返回值,如果要改变实参都会使用指针或者引用来实现,这样操纵地址使得实参操纵起来更加的方便。

    形参的作用域仅限于定义的函数内,一旦出了这个函数,定义的形参就会被释放掉。


第2个回答  2012-04-26
简单的说,形参、实参是用来完成函用数调中的数据传送。
函数定义用的是形参。
主函数调用函数时用的实参,它把实参的值传送给形参。
第3个回答  2012-04-26
每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参。形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值;如果形参为引用类型,则它只是实参的别名。
具体关于函数的定义,非引用形参及引用形参的区别,请参见《C++ primer》
第4个回答  2012-04-26
一楼说了很多了,而且书上这种内容页介绍很多,看看吧,还有就是自己去写子函数看看,在子函数里的参数跟主函数定义的参数有什么不一样
相似回答