c++
储存描述 | 持续性 | 作用域 | 链接性 | 如何声明 |
---|---|---|---|---|
自动 | 自动 | 代码块 | 无(只能在声明的代码块里作用) | 在代码块里 |
寄存器 | 自动 | 代码块 | 无 | 在代码块里 使用关键字register |
静态,无链接性 | 静态 | 代码块 | 无 | 在代码块里 使用关键字static |
静态,外部链接性 | 静态 | 文件 | 外部(可以在外部文件访问,外部文件需加关键字extern) | 不在任何函数内 |
静态,内部链接性 | 静态 | 文件 | 内部(只能在本文件中使用)) | 不在任何函数内,使用关键字static |
注意 :
只要是静态持续性的变量,生成后,该变量维持到整个程序结束才会销毁,声明和初始化只会执行一次!执行一次后该条语句就此消失。其值还是可以进行操作的。
静态变量,若初次声明未初始化,则默认初始化为0.
而自动变量则是每次执行都会生成一个自动变量,代码块结束就销毁,下次再遇到则再次生成。
参考程序 9.9
注意:
const限定符对默认储存类型稍有影响,const全局变量的链接性为内部,也就是说,全局const定义就像使用了static说明符一样
static 里的本文件,实际上只要是include添加的就算是本文件!!,头文件如果在其实现文件里被调用,那么,其实现文件就包含了头文件。 反之,如果头文件里包含了其实现文件,则头文件是一个文件。