A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 净坛使者 中级黑马   /  2014-1-4 07:00  /  1188 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么是形参,什么是实参,都是怎么用的

5 个回复

倒序浏览
形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。
具体参见:http://blog.csdn.net/zgrjkflmkyc/article/details/8774511
回复 使用道具 举报
形参是你在定义函数时,在参数列表中定义的形式参数。你定义的什么类型,在函数内部就可以用该类型提供的方法。
形参是形式参数,所以它没有具体的值,即在定义函数时,这个函数要操作那些数据,是什么类型的数据。
而具体的数据,即数据的值,或者数据的引用,我并不知道,需要外界给我传递过来。你给我传什么,我就操作什么。
形参相当于一个临时的存储。外界将具体的数据传递进来,形参用来接收。并临时的存储起来,以便函数内部使用。
当函数内部使用完了,完成了它的使命,形参就会被内存释放掉。

实参就是你要给形参的具体的数据。这个数据必须有值,或者引用,就是在内存中实实在在的存在。是你定义的函数要操作的类型
比如,你要定义了一个函数要做两个整数的相加,你在外界定义了整数常量 int i = 3;这就是实参,是实实在在在内存中存在的。
你将i(3)传递出去了,i(3)有实实在在的值,是实参。而函数参数列表中用于接收int类型的参数,没有实实在在的值,这就是形参。


评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
这个区别很简单,你记住只要是调用一个方法传递的参数就叫形参,而用到的方法得到的参数的及时实参,这样说你理解更简单易懂!如果对你有帮助,请求加技术分
回复 使用道具 举报
形参:全称为"形式参数"是在定义函数名和函数体的时候使用的参数,目的是用来接收调用该函数时传如的参数.
实参:全称为"实际参数"是在调用时传递个该函数的参数.

形参和实参的类型必须要一致,或者要符合隐含转换规则,
当形参和实参不是指针类型时,在该函数运行时,形参和实
参是不同的变量,他们在内存中位于不同的位置,形参将实
参的内容复制一份,在该函数运行结束的时候形参被释放,
而实参内容不会改变.

而如果函数的参数是指针类型变量,在调用该函数的过程
中,传个函数的是实参的地址,在函数体内部使用的也是
实参的地址,即使用的就是实参本身.所以在函数体内部
可以改变实参的值.

给你一个很简单的例子:

int f(int b)  /*b为形参*/
{ return b;}
main()
{int a=1;
printf("%d",f(a));/*a为实参*/
}

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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

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

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

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

4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马