这里写自定义目录标题
- 默认参数
- 函数重载
- 递归函数
- 变量周期
默认参数
可为形参指定默认值,如果在函数调用时,没有指定与形参对应的实参时,就自动使用默认值。
默认参数可简化复杂函数的调用。
默认参数在函数名第一次出现在程序中指定,可在函数原型中指定。
比如
iint fun(int x,int y,int z=1);
函数重载
同一个函数名字在不同类型上做类似的操作,为函数重载
比如
int fun(int x,int y)
int fun(double x,double y)
int fun(char *x,char *y)
同一函数名fun,可用不同类型参数进行调用,实际调用的也是不同的函数
内联函数
取代C中的预处理宏函数
宏函数由预处理器对宏进行替换。
内联函数通过编译器实现,是真正的函数,在调用 时,内联函数像宏函数 一样展开,没有一般函数的参数压栈和退栈操作。
使用inline关键字定义内联函数,放在函数定义或声明中函数原型之前。
比如
inline int fun(int x){
...
}
类说明定义的任何函数被编译器认为是内联函数,没有inline说明也无所谓。
内联函数有局限性,执行代码不能太多,否则编译器会放弃内联方式
递归函数
函数在函数体内部直接或间接调用自己,为递归函数
可解决复杂问题
int fact(int n){if (n<=1) return 1;else return n*fact(n-1);}
1.递归编译代码比较简洁,但牺牲效率。
2、无论哪种递归调用,必须有递归出口。
3、递归语句中保证完成相关操作。
变量周期
1、由编译程序在编译时给其分配存储空间,称为静态存储分配。
2、由程序在支行时自动 给其分配存储空间,称为自动存储分配。
3、由于作用域的屏蔽作用,如果函数 中有同名变量,则不能访问外部变量,为了能在函数内部访问函数外定义的变量,可使用C++中的作用域运算符::
int x=8;
int main(){int x=9;cout<<x<<endl;cout<<::x<<endl;
}