在C++ 中,在函数体内或者是代码段内定义或者声明的变量其作用域是相应的函数或者是代码段,是局部变量,执行结束内存自动释放。相对于局部变量,全局变量的定义和声明在函数体外,作用域从定义处到相应的文件结束。关于全局变量的使用分以下:
1.在文件中定义了全局变量,需要在前面使用:这时在定义之前用extern关键字对其进行声明。eg:
//cpp文件extern int a;void SetA(){ a = 100;}int a;int main(){ //..... }在a的定义之前要使用a,必须在使用之前用extern关键字声明。2.在一个cpp文件中定义了全局变量,需要在其他文件中使用:这时需要在其他文件中需要使用的地方之前用extern声明下eg:
//cpp1文件extern int a; // 声明void setA(){ a = 100;}//cpp2文件,a的定义文件int a; //全局变量a的定义int main(){//....} 3.在一个cpp文件中定义了全局变量,但是仅仅需要在本文件中使用该变量:这是需要在定义的时候加上static关键字。//cpp1文件extern int a; // 声明无效,a仅在cpp2文件中有效void setA(){ a = 100;}//cpp2文件,a的定义文件static int a; //全局变量a的定义int main(){//....}上面的代码中,编译将会出现错误。因为cpp2中定义的全局变量用了static关键字,其作用域仅在该cpp文件内,不能在其他cpp和文件中使用。注意:
1:当需要多个文件之间传递数据或者是消息的时候,可以用全局变量。但是需要谨慎,不要多处都用到一个全局变量,这样很容易造成错误,且难找出错误。
2:全局变量在定义或者声明的时候最好给变量进行初始化。
新闻热点
疑难解答
图片精选