C++中变量声明与定义的规则 | 您所在的位置:网站首页 › c语言变量变量定义变量声明const关键字使用 › C++中变量声明与定义的规则 |
声明与定义分离
Tips:变量能且仅能被定义一次,但是可以被多次声明。 为了支持分离式编译,C++将定义和声明区分开。其中声明规定了变量的类型和名字,定义除此功能外还会申请存储空间并可能为变量赋一个初始值。 extern如果想声明一个变量而非定义它,就使用关键字extern并且不要显式地初始化变量: extern int i; // 声明i而非定义i extern int i = 1; // 定义i, 这样做抵消了extern的作用 static当我们在C/C++用static修饰变量或函数时,主要有三种用途: 局部静态变量外部静态变量/函数类内静态数据成员/成员函数其中第三种只有C++中有,我们后续在面向对象程序设计中再探讨,这里只讨论静态局部/全局变量。 1. 静态局部变量在局部变量前面加上static说明符就构成静态局部变量,例如: // 声明局部静态变量 static int a; static int array[5] = {1, 2, 3, 4, 5}; 静态局部变量在函数内定义,但不像自动变量那样当函数被调用时就存在,调用结束就消失,静态变量的生存期为整个源程序静态变量的生存期虽然为整个源程序,但是作用域与自动变量相同,即只能在定义该变量的函数内使用该变量,退出函数后虽然变量还存在,但不能够使用它对基本类型的静态局部变量如果在声明时未赋初始值,则系统自动赋0值;而对普通局部变量不赋初始值,那么它的值是不确定的根据静态局部变量的特点,它的生存期为整个源程序,在离开定义它的函数(作用域)但再次调用定义它的函数时,它又可继续使用,而且保存了前次被调用后留下的值。因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量,虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此最好采用局部静态变量。例如: #include void foo() { int j = 0; // 普通局部变量 static int k = 0; // 静态局部变量 ++j; ++k; printf("j:%d, k:%d\n", j, k); } int main(void) { for (int i = 1; i |
CopyRight 2018-2019 实验室设备网 版权所有 |