全局的静态变量放在.data
段(已初始化)或者.bss
段(未初始化),局部静态变量放在.data
中(系统自动初始化其值)。放在这两个段的内容的特点:
- 记录值的改变,例如函数内部中的静态变量退出后变量不会销毁,而是把值记录下来。下次调用该函数时,其值还是上次保存的值。
仅在该作用域中可以使用,不能跨出作用域使用。如下例中,
file2.c
中使用hello
会报错。//file1.h #include <stdio.h> void printLine(); //file1.c #include "file1.h" static char *hello = "hello"; void printLine() { printf("%s\n", a); } //file2.c #include <stdio.h> #include "file1.h" int main(int argc, char **argv) { printLine(); printf("%s\n", hello); return 0; }