当调用一个函数时,就会在栈空间,为这个函数,分配一块内存区域,
这块内存区域,专门给这个函数使用。 这块内存区域,就叫做“栈帧”。
-----------------------------------------------------------------------------------------------------------------------
函数名重载:
函数名相同, 但是, 函数的参数(形参)绝不相同:
1) 参数个数不同
2) 或参数个数相同, 但是参数的类型不同
只有返回类型不同,不能构成函数重载
只有形参变量名不同, 不能构成函数重载.
注意: C 语言不支持函数重载
调用函数时,形参被赋值为对应的实参, 实参本身不会受到函数的影响!
----------------------------------------------------------------------------------------------------------------------
函数的缺点:
每调用一次函数,就会为这个函数分配一个“栈”,
在计算机底层做很多准备工作(保护原来的执行环境,切换到新的执行环境)
有一定的“时间开销”
解决方案: 使用内联函数
内联函数:
当编译器在编译时, 如果遇到内联函数,
就会直接将整个函数体的代码插入”调用处”,
就相当于内联函数的函数体, 在调用处被重写了一次。
以避免函数调用的开销, 获得更快的时间。
内联函数的缺点:
使调用内联函数的程序,变得“臃肿”,消耗调用函数的“栈”空间。
内联函数的使用场合:
1)内联函数中的代码应该只是很简单、执行很快的几条语句。
2)这个函数的使用频度非常高,比如在一个循环中被千万次地使用。
数的定义(即整个数体),而不能只出现内联函数的声明。
--------------------------------------------------------------------------------------------------------------------------------
递归函数
定义:在函数的内部,直接或者间接的调用自己。
要点: 再定义递归函数时,一定要确定一个“结束条件”!!!
--------------------------------------------------------------------------------------------------------------------------------
制作自己的静态库-> 创建项目->win32->win32项目->静态库->改为Release
属性->配置属性->c/c++->预编译头->改为不使用预编译头
编写对应的.cpp 和头文件
生成解决方案,即可在 release 目录下找到 .lib 文件。