7.4 形式参数与实际参数,参数值的传递 6 |' l V+ b3 `+ c _+ Q; a
1.在函数定义中,出现的参数名称为形参(形式参数),在调用函数时,使用的参数值称为实参(实际参数)。 . z i2 T. ` p) y( L& v/ p' ]
2.调用函数和被调用函数之间的参数值的传递是″按值″进行的,即数据只能从实参单向传递给形参。也就是说,当简单变量作为实参时,用户不能在函数中改变对应实参的值。
2 l$ D$ H! M: R. O5 x 7.5 函数的正确调用(嵌套调用,递归调用)
* ^) I: o& d% N; {' w0 u; T3 y 1.调用函数时,函数名必须与被调用的函数名字完全一样。实参的个数与类型和形参的个数与类型一致。 . b9 }3 N" d4 C
2.C语言规定:函数必须先定义,后调用,也就是被调用函数必须在调用之前加以说明,或被调用函数整个放在调用函数之前。但对返回值类型为int或char类型的函数可以放在调用函数的后面。 6 g- U" | `: E) |, e7 E1 D6 F
3.C语言中函数定义都是互相平行、独立的,C语言不允许嵌套定义函数,但允许嵌套调用函数,也就是说,在调用一个函数的过程中,又调用另一个函数。
3 j% n w* l N, Z+ w3 ^# ^9 O5 Y 4.在C程序中,调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 - m2 j, e, _+ n1 x+ \
5.递归调用函数是C语言的特点之一,有时递归调用会使求解的问题变得更简单明了。
: \! F, _5 z& T- Z 7.6 局部变量和全局变量
2 e4 f/ j' g# _: d3 V 1.局部变量
/ m- \/ p* `8 v! ]# M6 [ 在一函数内部所定义的变量称为局部变量,局部变量只在本函数范围内有效。
- R8 }+ V2 t! L, N 注意: 0 q' r( E, E, [7 R$ W' G
①不同函数可以使用相同的局部变量名,它们将代表不同的对象,互不干扰; : _8 F2 ?, n# |& A
②一个函数的形参也为局部变量; + w$ V+ X, w7 N5 _* \2 r" P
③在函数内部,复合语句也可定义变量,这些变量也为局部变量,只在此复合语句中有效。 ' w% `, N% ~! B, [! {2 q1 h
2.全局变量 9 x& e8 K* P) Y, k, M: x
在C语言中,程序的编译单位是源程序文件,一个源程序文件中包含一个或多个函数。在函数之外所定义的变量称为外部变量,也称为全局变量。全局变量可以被包含它的源程序文件中的其他函数所共用,作用域为从定义变量的位置开始到源程序文件结束,全局变量可以增加函数之间数据的联系。 注意:当在同一个源程序文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用,局部变量起作用。 |