在C语言中常出现函数调用,而执行函数时会出现参数的传递,其中参数传递需要形参与实参的配合。形式参数,是在定义函数名函数体时所使用的参数,其作用是用于接收外部主调函数传入的参数。即函数括号内的所有参数均称为形参。与之相反的,实参是指主调函数中待传送给被调函数的参数。
其中参数传递又存在两种机制:
一为传值调用机制,即只能存在单方向的实参的值传递给形参,而不能把形参的值反向传递给实参。在函数调用过程中,形参的变化不会影响实参,形参在函数开始时分配空间,结束时自动释放。
二为引用调用机制,即实参将地址传递给形参而不是传递值,所以形参在函数内不申请空间,其在函数内的任何操作都是透过地址对实参进行操作,对实参产生影响。
同一函数的形参和实参在数量、类型、顺序上必须一直,否则会出现类型不匹配的错误。
函数做实参使用:
实参的传递范围相当广泛,包括常量、变量、表达式、函数等,在传递时必须有确定的值。常量、变量传递都相当常见,而不常见的是函数做实参。
函数做参数传递与变量由引用调用机制传递类似,其本质相同,不同之处在于其写法。
C语言中由引用调用机制传递参数,在实参前添加取地址符,在形参处添加指针运算符即可。而函数名作为参数,需要用到函数指针。以下为函数指针定义:
Type(*name)(argument_list);表示返回值是type,参数列表为argument_list的函数指针name。
函数做实参,适用于函数根据不同