|
|
|
函数调用由函数名和函数调用运算符“(,)”组成,“(,)”内有0个或多个逗号分隔的参数(称为实参)。每个实参是一个变量或表达式,且实参的个数与类型要与被调用函数定义时的参数(称为形参)个数和类型匹配。当被调函数执行时,首先计算实参表达式,并将结果值传送给形参,然后执行函数体,返回值被传送到调用函数。如果函数调用后有返回值,函数调用可以用在表达式中,而无返回值的函数调用常常作为一个单独的语句使用。调用一个函数之前必须对被调用函数进行声明。
|
|
|
C程序中的参数传递方式为值传递(地址也是一种值)。函数在被调用以前,形参变量并不占内存单元,当函数被调用时,才为形参变量分配存储单元,并将相应的实参变量的值复制到形参变量单元中。所以,被调用函数在执行过程修改形参变量的值并不影响实参变量的值。
|
|
|
当数组作为函数参数时,调用函数中的实参数组只是传送该数组在内存中的首地址,即调用函数通知被调函数在内存中的什么地方找到该数组。数组参数并不指定数组元素的个数,除传送数组名外,调用函数还必须将数组的元素个数通知给被调用函数。所以,有数组参数的函数原型的一般形式为:
|
|
|
|
函数参数的引用传递不同于值传递。值传递是把实参的值复制到形参,实参和形参占用不同的存储单元,形参若改变值,不会影响到实参。而引用传递本质上是将实参的地址传递给形参。以数组作为函数参数传递时,是引用传递方式,即把实参数组在内存中的首地址传给了形参,避免了复制每一个数组元素,从而可以节省内存空间和运行时间。在被调用函数中,如果改变了形参数组中元素的值,那么在调用函数中,实参数组对应元素的值也会发生相应的改变。
|
|
|