递归函数
1.进程使用的内存按照功能大致分为四个部分:
(1)代码区 (2)数据区
(3)堆区 (4)栈区
2.函数调用机制
(1)建立栈帧空间;(2)保护现场;
(3)为被调函数传递数据,同时形参获得存储空间,接着给局部变量分配空间;
(4)执行被调函数函数体;
(5)当被调函数执行完成,释放被调中局部变量占用的栈空间;
(6)恢复现场;(7)继续主调函数后续语句
3.作用域与生存区
(1)作用域:作用域指标识符能够被使用的范围只有在作用域内标识符才可以被访问
(2)局部域:局部域包括块域和函数原型域。任何标识符作用域的起始点均为标识符说明处。
*编译器的原则是局部优先原则
(3)生存期
存储类型说明符:auto和register(自动类型),static(静态类型),extern(外部类型)
静态生命期指的是标识符从程序开始运行时存在,既具有存储空间,到程序运行结束时消亡,即释放空间。
static总结:(1)统计函数被调用的次数
(2)减少局部数组建立和赋值的开销,变量的建立和赋值是需要一定的处理器开销的,特别是数组等含有较多元素的储存类型。在一些含有较多的变量并且被经常调用的函数中,可以将一些数组声明为static类型,以减少建立或者初始化这些变量的开销。
4.若在函数和全局变量用static关键字修饰,那么该函数和全局变量只在文本中可见,其他文件无法使用。
若全局变量用const关键字修饰,只在本文件中可见,其他文件无法访问,若其他文件要使用必须再用extern修饰。
extern和static不能联合使用*