2.2 变量
2.2.2 变量声明和定义的关系
为了支持分离式编译(将程序分为若干个文件,每个文件可被独立编译),c++语言将声明和定义区分开来。
声明:使名字为程序所知,一个文件如果想使用别处的名字则必须包含对那个名字的声明。
定义:创建与名字相关联的实体。
两者都规定了变量的类型和名字,但定义还申请存储空间,也可能会为变量赋一个初始值。
extern int j; //声明 int j; //声明并定义 extern double pi = 3.14; //定义
变量能且只能被定义一次,但是可以被多次声明。
静态类型:在编译阶段做类型检查,这就要求我们在使用变量前需声明其类型。
2.2.4 名字的作用域
同一个名字在不同的作用域可能指向不同的实体。名字的有效区域始于名字的声明语句,以声明语句所在作用域的末端为结束。
嵌套的作用域
int reused = 42; int main() { int unique = 0; //输出42 0 std::cout<<reused<<" "<<unique<<std::endl; int reused = 0; //输出0 0 std::cout<<reused<<" "<<unique<<std::endl; //输出42 0 std::cout<<::reused<<" "<<unique<<std::endl; return 0; }
如果函数有可能用到某全局变量,则不宜再定义一个同名的局部变量。
浙公网安备 33010602011771号