形参和实参

       函数的参数分为形参和实参两种。形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量也不能使用。形参和实参的功能是作数据传送。发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 
    形式参数(简称形参)是在用户自定义函数过程(Function)、子过程(Sub)过程名后圆括号中出现的变量名,多个形参用逗号分割、  实际参数(简称实参)是在调用上述过程时,在过程名后的参数,其作用是将它们的数据(值或地址)传送给被调过程对应的形参变量。   
       形参可以是:变量,带有一对括号的数组名。  
       实参可以是:同类型的常数、变量、数组元素、表达式、数组名(带有一对圆括号)。 
函数的形参和实参具有以下特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。 

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

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

4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。
形参和实参的对照实例(C语言版)
main()
{
   int n;  //实参(定义在主函数中)
   printf("input number \n");
   scanf("%d",&n);
   s(n); //实参(定义在主函数中)
   printf("n=%d\n",n);
}
int s(int n)  //形参(定义在函数外)
{
   int i;
   for(i=n-1;i>=1;i--)
   n=n+i;
   printf("n=%d\n",n);
}

 
 
本程序中定义了一个函数 s,该函数的功能是求∑ni 的值。在主函数中输入n 值,并作为实参,在调用时传送给s 函数的形参量n( 注意,本例的形参变量和实参变量的标识符都为n,但这是两个不同的量,各自的作用域不同)。在主函数中用printf 语句输出一次n 值,这个n 值是实参n 的值。在函数s 中也用printf 语句输出了一次n 值,这个n 值是形参最后取得的n 值。从运行情况看,输入n 值为100。即实参n 的值为100。把此值传给函数s 时,形参n 的初值也为100,在执行函数过程中,形参n的值变为5050。返回主函数之后,输出实参n 的值仍为100。可见实参的传值调用值不随形参的变化而变化。
 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值