c++學習筆記---全局變量

全局變量

         全局變量的使用是一個非常頭疼的問題,初學者一不小心就會使用錯誤,我當初也深受荼毒。再次學習c++有了更加清晰的認識,做個筆記備忘。

         全局變量和局部變量不同,局部變量的生存週期只存在於函數的執行週期內。函數被執行,要使用的局部變量開闢內存,函數執行結束,相應的內存被收回。而全局變量的生存週期存在於整個工程的始終。

        但是全局變量的使用應該要十分小心。因爲它定義在不同的位置,鏈接性就不同(好吧,專業術語裝個比),其實就是可以正確使用這個全局變量的範圍不同。下面介紹全局變量的三種作用範圍及正確使用方法。

        1                  int a = 1;

        2                 static  int   a = 1;

        3              

              int function()
             {
                static int a = 1;
                ........
                return a;
             }

                          在這可能有些同學要問,爲什麼3中定義變量要加 static,因爲不加它就是個局部變量

開始介紹使用方法

第1種:在函數體外,嚴格的說是在代碼塊({}花括號)外定義(聲明)的變量且不加關鍵字static

          這種全局變量的作用域是整個工程,但是在其他文件下使用這個全局變量不能再定義且必須使用

                                                                              extern int a ;

聲明,如果再定義編譯器會提示錯誤

第2種:在函數體外,但是加了關鍵詞static

         這種定義(聲明)方法,全局變量的作用域只是這個文件

第3種:在代碼塊中,加關鍵詞static

        這種方法,全局變量的作用域只在這個代碼塊中,但是出了這個代碼塊變量仍然存在

       (這和局部變量存在區別,這種變量可以用來做返回值,而局部變量不能用來做返回值)

注意:一般不要在頭文件中定義全局變量,可能有多個源文件包含這個頭文件,會編譯錯誤

            局部變量和全局變量同名同類型時,會優先使用局部變量

           第三種全局變量只能初始化一次,即使在遞歸調用函數中


        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章