目录
形参与实参
在函数调用过程中把函数的参数分为,形参和实参。
形参(形式参数):
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。
形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。
举个简单的例子方便大家理解:
在下面代码中,第2行定义函数的时候,在函数名Add的括号中写的x和y,称为形式参数,简称形参,实际上,如果只是定义了Add函数而不去调用的话,Add函数的参数x和y只是形式上存在的,并未向系统申请内存空间,不会真实存在于内存中,所以叫做形式参数。形式参数只有在函数被调用的过程中为了存放实际参数传递过来的值,才会向内存申请空间,这个过程就是形参的实例化。
实参(实际参数):
在调用有参函数时,函数名后面括号中的参数称为“实参”,是我们真实传给函数的参数,实参可以是:常量、变量、表达式、函数等。
无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。
还是以上述代码为例子:
在上面的代码中,2~7行是Add函数的定义,有了函数后,在17行我们调用Add函数。我们在17行调用Add函数时,传递给函数的参数a和b,称为实际参数,简称实参,实际参数就是真是传递给函数的参数。
实参和形参的关系:
虽然我们提到了形参与实参之间有联系,即实参是传递给形参的,但是形参和实参分别由自己独立的内存空间。这个现象可以通过调试进行观察,请看下面的代码和调试结果:
当我们运行程序输入a,b的值分别为10和20的时候,a,b(实际参数)的值通过调用Add函数传递给了x,y(形式参数)。通过监视窗口我们可以看到x=10,y=20,a=10,b=20,即x,y接收了来自a,b的值,但是通过监视a,b和x,y的地址即&a,&b和&x,&y可以看出形参与实参的地址并不相同,即形参和实参分别有自己独立的内存空间,当实参传递给形参时,形参是实参的一份临时拷贝,对形参的修改是不会影响实参的。