函数参数:
函数参数在定义时放在函数名称的后面。
形式参数与实际参数:
两者都叫作参数。
名称上:
形式参数:形式上存在的参数。
实际参数:实际存在的参数。
作用上:
形式参数:定义函数时,函数名后面括号中的变量名称为“形式参数”。
实际参数:在调用一个函数时,函数名后面括号中的参数为“实际参数”。
函数的调用:
1、函数语句调用:
把函数的调用作为一个语句就称为函数语句调用。
习题:编写一个函数,输入2元店广告词:“2块钱,你买不了吃亏,买不了上当,买啥啥便宜,买不买都过来看一看,本店商品一律2元。代码如下:
2、表达式中调用函数:
函数出现在一个表达式中,这时要求函数必须返回一个确定的值。
习题:输入电压与电阻的值,利用欧姆定律求出电阻。代码如下:
3、把函数作为参数使用:
函数调用作为一个函数的实际参数,即将函数返回值作为实际参数传递到函数中。
嵌套调用:
在一个函数体内可以调用另外一个函数。
递归调用:
C语言中每一个函数都可以直接或者间接地调用自己。
注意:
1、每一级函数调用时都有自己的变量,但是函数代码并不会得到复制。
2、每次调用都会有一次返回。
3、递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序。
4、递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反。
5、递归函数中必须有终止语句。
习题:用递归表达式求阶乘。代码如下:
内部函数与外部函数:
C语言把函数分为两类:一个是内部函数,一个是外部函数。
两者区别:
在C语言中不能被其他源文件调用的是内层函数。
在C语言中能被其他源文件调用的是外层函数。
内部函数:
static 返回值类型 函数名(参数列表)
例如在函数返回值类型char*前加上关键字static,就将原来的函数修饰成内部函数。
习题:利用内部函数来输出:"Where there is a will there is a way"。代码如下:
外部函数:
extern 返回值类型 函数名(参数列表)
注意:在C语言中定义函数时,若不指明函数时外层还是内层,则默认为外层函数。
定义外部函数时可以省略关键字extern。
习题:利用外层函数输出一句话。代码如下: