目录
形式参数
形式参数(形式参数):
形式参数是指函数名后面括号内的变量。 由于形式参数仅在调用函数时才实例化(分配内存单元),因此称为形式参数。
函数调用完成后,形参自动销毁。 因此形式参数仅在函数内有效。
举个简单的例子来帮助大家理解:
下面的代码中,第2行定义函数时,函数名Add的括号里写的x和y称为形式参数,简称形式参数。 事实上,如果Add函数只是定义并没有被调用,那么Add函数的参数x和y只是形式上存在的。 它们不向系统申请内存空间,也不会实际存在于内存中,因此称为形式参数。 形参只会在内存中申请空间,以便存储调用函数时实参传递的值。 这个过程就是形式参数的实例化。
实际参数(实际参数):
调用参数化函数时,函数名后括号内的参数称为“实际参数”,是我们实际传递给函数的参数。 实际参数可以是:常量、变量、表达式、函数等。
无论实参是什么类型的量,在进行函数调用时都必须有确定的值,以便将这些值传递给形参。
我们以上面的代码为例:
上面的代码中,第2行到第7行是Add函数的定义。 有了函数之后,我们调用第17行的Add函数。当我们调用第17行的Add函数时,传递给函数的参数a和b称为实参,简称实参。 实际参数是实际传递给函数的参数。
实参与形参的关系:
虽然我们提到形参和实参之间是有联系的,即实参传递给形参,但是形参和实参有各自独立的内存空间。 通过调试可以观察到这种现象。 请看下面的代码和调试结果:
当我们运行程序并输入a和b的值分别为10和20时,a和b(实参)的值通过调用添加功能。 通过监控窗口我们可以看到x=10,y=20,a=10,b=20,即x,y收到了a,b的值,但是通过监控a,b和x,y的地址为 &a , &b 和 &x, &y 可以看出形参和实参的地址是不一样的,即形参和实参有各自独立的内存空间。 当实参传递给形参时,形参是实参的副本。 临时复制,修改形参不会影响实参。