1.函數:能夠實現特定功能的代碼片段

 函数的声明形式 函数返回类型 函数名称(参数类型 参数名,参数类型 参数名);

 说明:

 函数声明和定义的区别:函数声明没有函数体 与变量声明类似,在声明末尾有分号

2.自定义函数

把完成某一特定功能的语句封装成函数,通过函数调用完成该功能

若干个函数可以放在不同的文件中

有利于简化程序结构

有利于代码复用

3.函数的调用方法

 1) 表达式方式:函数调用出现在一个表达式中,这种表达式称为函数表达式。这时要求函数返回一个确定值以参加表达式的运算。   例如:y = max(a,b) + max(c,d),两次函数调用都是表达式的一部分,分别以返回a与b、c与d的最大值参与表达式运算。

 2) 语句方式:把函数    调用作为一个语句。

 3) 参数方式:函数调用作为另一个函数的实参。 例如:max(max(a,b),max(c,d)),max(a,b)与max(c,d)两次函数调用作  为另一次max()函数调用的实参,用来求出a、b、c、d的最大值。 以参数方式调用实际上是表达式调用方式的一种特殊情况。

4.函数的参数与返回值

参数:参与运算的值

返回值:运算的结果

函数可以没有返回值,也可以没有参数

5.函数的形参与实参

形参:在函数声明或定义形式中函数名后的内容

       有类型描述,是变量

实参:函数调用形式中函数名后的内容

       通常没有类型描述,可为常量也可为变量

6.函数调用过程:

实参和形参类型和个数应该匹配

按值传递:实参和形参是两块不同的空间,只是把实参的值复制一份存放到形参变量中

7.局部变量与全局变量

局部变量:在函数内容定义的变量(形参也属于局部变量)

          作用域:从该变量定义定义语句开始到’}’结束

全局变量:在函数外部定义的变量

          作用域::从该变量定义语句开始,如无特别限制可在各文件中使用

          只能使用常量对其进行初始化

  若全局变量与局部变量重名则局部变量起作用(就近原则)

 static 修飾全局變量:其作用域僅為本文件內

        修飾局部變量:其作用域不變,生命週期變為本文件內

8.函數名本質上為一個地址

9.递归:在描述该概念的时候又用到了概念本身,对应到函数就是函数实现中又有对自身的调用

 递归就是函数的不断调用,但是调用必须有终止条件,否则函数会布线运行下去,系统终将崩溃

 base case必须存在