在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:全局變量在定義或者聲明的時候最好給變量進行初始化。
新聞熱點
疑難解答
圖片精選