作用域:
作用域和可见性:作用域和可见性可以说是对一个问题的两种角度的思考。
作用域就是讲一个变量或函数在代码中起作用的范围,或者说,一个变量或函数的“有效范围”。
代码中的变量或函数,有的可以在整个程序中的所有范围内起作用,这称为“全局”的变量或函数。而有的只能在一定的范围内起作用,称为“局部”变量。
一对{}括起来的代码范围,属于一个局部作用域
在局部作用域内定义的变量,其有效范围从它定义的行开始,一直到该局部作用域结束。
如果这个局部作用域包含更小的子作用域,那么子作用域的具有较高的优先级。
“不能在同一作用范围内有同名变量”。
函数的定义默认就是外部的
生存期:
一个变量为什么有会不同的作用域?其中一种最常见的原因就是它有一定的生存期。
动态生存期:就是放在“堆区”的数据。这些数据是在程序运行到某一处时,由程序员写的代码动态产生;后面又由程序员写的代码进行释放。
局部生存期:这里的局部和前面讲“局部作用域”一致,都是指“一对{}括起来的代码范围”。
静态生存期:就是放在“数据区”里的数据。程序一运行时,它们就开始存在;程序结束后,它们自动消亡。
“静态存储类型”是指:一个全局变量,它被加上static之后,就只能在本文件内使用,别的文件不能通过加extern的声明来使用它。
“静态生存期”是指:一个变量,它仅仅产生和消亡一次(即在程序运行时产生,在程序退时消亡),而不像“动态生存期”或“局部生存期”那样可以多次产生于消亡。
考点:
把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。
static函数与普通函数作用域不同。仅在本文件
static全局变量与普通的全局变量有什么区别:static 全局变量只初使化一次,防止在其他文件单元中被引用;
static 局部变量和普通局部变量有什么区别:static 局部变量只被初始化一次,下一次依据上一次结果值;
static 函数与普通函数有什么区别:static 函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝.