购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4.5 实际参数的传递方式

在进行函数调用时,必须用主调函数中的实际参数来替换被调函数中的形式参数,这就是所谓的参数传递。在C语言中,对于不同类型的实际参数,有三种不同的参数传递方式。

(1)基本类型的实际参数传递

当函数的参数是基本类型的变量时,主调函数将实际参数的值传递给被调函数中的形式参数,这种方式称为值传递。前面讲过,函数中的形式参数在未发生数调用之前是不占用内存单元的,只有在进行函数调用时才为其分配临时存储单元。而函数的实际参数是要占用确定的存储单元的。值传递方式是将实际参数的值传递到为被调函数中形式参数分配的临时存储单元中,函数调用结束后,临时存储单元被释放,形式参数的值也就不复存在,但实际参数所占用的存储单元保持原来的值不变。这种参数传递方式在执行被调函数时,如果形式参数的值发生变化,可以不必担心主调函数中实际参数的值会受到影响。因此值传递是一种单向传递。

(2)数组类型的实际参数传递

当函数的参数是数组类型的变量时,主调函数将实际参数数组的起始地址传递到被调函数中形式参数的临时存储单元,这种方式称为地址传递。地址传递方式在执行被调函数时,形式参数通过实际参数传来的地址,直接到主调函数中去存取相应的数组元素,故形式参数的变化会改变实际参数的值。因此地址传递是一种双向传递。

(3)指针类型的实际参数传递

当函数的参数是指针类型的变量时,主调函数将实际参数的地址传递给被调函数中形式参数的临时存储单元,因此也属于地址传递。在执行被调函数时,也是直接到主调函数中去访问实际参数变量,在这种情况下,形式参数的变化会改变实际参数的值。

前面介绍的一些函数调用中所涉及的都是基本类型的实际参数传递,这种参数传递方式比较容易理解和应用。关于数组类型和指针类型实际参数的传递较为复杂,将在第4章中详细介绍。 PeONOQmHFQv04qV7i3k504G508Jt294boQBoKy1ECMcgrDOytr3wK3NAWoh0pnp3

点击中间区域
呼出菜单
上一章
目录
下一章
×