一、形参与实参的定义
1.什么是形参
形参(形式参数)是指函数名后括号中的变量。形参只有在内存被调用时才会被调用,在函数调用完毕后就会自动销毁,故称为形式参数。
2.什么是实参
实参即为真实传给函数的参数。常量、变量、表达式、函数等都可以作为实参。实参在函数调用时,必须要为确定的数以方便传给形参。
二、关于形参与实参的实际简单应用
在实际中,我们需要写一个交换数值的函数,诸如下图中的函数:
void swap ( int x , int y )
{
int swap = x;
x = y ;
y = swap;
}
那么我们实际调用此函数时,可以这样:
int main()
{
int a = 0;
int b = 0;
//此处为初始化两个变量,即为要交换的数字
scanf("%d %d",%a,&b);
swap( a , b );
//此处调用函数
printf("%d %d",a,b);
return 0;
}
此刻我们运行代码,输入要交换的数字,3,5。但我们很快会发现,交换后的数字仍为3,5。显而易见,代码出现了问题。而问题所在,就是本文章中的主题,形参与实参对实际运用的影响。上面我们的swap函数中的"x""y"均为实参,当我们输入3,5之后,x与y的值被赋为了3和5,交换后变成了5和3,可是在swap函数运行结束后,形参便销毁了。所以,a与b的数值仍未被交换。
那么,我们如何实际运用实参来实现我们的目的呢?请看下方博主的代码:
依旧是创建交换函数,此处我就用DDou来命名此函数了,与上文的函数进行区分。
DDou ( int* pa ; int* pb )
{
int swap = *pa ;
*pb = *pa ;
*pa = swap ;
}
显而易见,此函数与上函数的唯一区别就是将 int x 和 int y分别替换成了 int* pa 和 int* pb。
即用实参替换了形参。
此刻主函数就变成了:
int main()
{
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
DDou( &a,&b );
printf("%d %d",a,b);
return 0;
}
而我们再次运行代码,就会发现此代码时可以成功交换数值ab的。
三、尾言
如若文中出现错误,欢迎各位读者斧正!