内联函数:
内联函数的主要作用就是可以节省代码运行的时间,这个时间是指栈空间中给内联函数分配栈帧的时间,因为内联函数是不会在栈空间中分配栈帧的。在普通函数的定义前加上 inline 就是将这个普通函数定义为内联函数。
当编译器遇到哦内联函数时,就会将整个函数的代码插入调用处,就相当于内联函数的函数体在调用处重新写了一遍,以避免函数调用的开销,从而节省时间。但这会使得调用内联函数的程序变得十分臃肿,会消耗调用函数的栈空间。
内联函数的使用场合:
1.内联函数中的代码应该只是很简单,执行很快的几条语句。
2.这个函数的使用频率很高,比如在循环体中被调用 N 次。
重载函数:
重载函数是 C++ 中新增的,在 C 中是不允许的。
重载函数就是和其他函数的函数名相同,但是形参的类型或者个数不同。
在调用函数时,会自动识别数据类型和参数个数相同的函数进行调用,会自动匹配。
注意:使用重载函数时,函数名相同了,但函数的功能不能相同,也不能相差太远,只能功能相近。
递归函数:
递归函数分为两种方式递归:
1.直接递归:在函数内部直接调用自己。
2.函数 a 调用函数 b ,函数 b 调用函数 a -----形成相互调用。
优点:可以将复杂的问题简单化。
缺点:
1.性能极低,实际开发中其实很少使用。
2.调用次数过多会使栈空间崩溃,每调用一次递归函数都会分配一个栈帧。
注意:设计递归函数时一定要确定好结束递归的条件。
函数的定义:
1.先确定好函数的功能,功能一定要明确,且只能有一个功能。
2.确定好函数的参数:
是否需要参数,参数的个数,参数的类型。
3.确定函数的返回值:
是否需要返回值,返回值的类型。
4.确定函数名:
(1)函数名一定要顾名思义。
(2)命名方法与变量名的命名方法相同。
(3)不能与标准库已有的函数名相同(避免冲突)。
5.函数实现:
type functionName ( type str1 , type str2 ) {
函数体…
}
记录一下,以免忘记。