全局变量和静态变量的存储方式是一样的,只是作用域不同。如果它们未初始化或初始化为0则会存储在BSS段,如果初始化为非0值则会存储在DATA段,见进程的地址空间分配一文。 静态变量的作用域是当前源文件,全局变量的作用域是整个可执行程序。 值得注意的是:
- 如果在头文件定义全局变量,在预编译期间
#include
的头文件会被拷贝进源文件中,编译器是不知道头文件的。 - 虽然全局变量是全局作用域,但需要
extern
关键字来声明以通过编译。因为C++是强类型语言,编译时需要根据变量声明做类型检查。
原文链接:
http://harttle.com/2015/09/30/cpp-static-and-global.html