靜態標誌Static

一、靜態全局變量(又稱全局靜態變量): 

(1)               靜態全局變量的定義:在全局變量前加一個static,使該變量只在這個源文件中可用。 

  

(2)全局變量與全局靜態變量的區別: 

        (a)若程序由一個源文件構成時,全局變量與全局靜態變量沒有區別。 

          (b)若程序由多個源文件構成時,全局變量與全局靜態變量不一樣:全局靜態變量使得該變量成爲定義該變量的源文件所獨享,即:全局靜態變量對組成該程序的其它源文件是無效的。 

  

(3)靜態全局變量的做用: 

(a)沒必要擔憂其它源文件使用相同變量名,彼此相互獨立。 

(b)在某源文件中定義的靜態全局變量不能被其餘源文件使用或修改。 

例如:一個程序由兩個源文件組成,其中在一個源文件中定義了「int   n;」,在另外一個源文件中定義了「static   int   n;」則程序給它們分別分配了不一樣的空間,兩個值互不干擾。 

  

例如:下面在file1.cpp中聲明全局變量n,在file2.cpp中定義全局靜態變量n。文件file1.cpp和file2.cpp單獨編譯都能經過,但鏈接時,file1.cpp中的變量n找不到定義,產生鏈接錯誤。 

//   file1.cpp 

#   include   <iostream.h> 

void   fn() 

extern   int   n; 

void   main() 



n=20; 

cout < <n < <endl; 

fn(); 



//   file2.cpp 

#   include   <iostream.h> 

static   int   n;     //   默認初始化爲0,注意此處定義的n   只能在file2.cpp中使用。 

void   fn() 



n++; 

cout < <n < <endl; 



  

二、靜態函數:使某個函數只在一個源文件中有效,不能被其餘源文件所用。 

定義:在函數前面加上static。 

說明:函數的聲明和定義默認狀況下在整個程序中是extern的。 

靜態函數的效果: 

(1)它允其餘源文件創建並使用同名的函數,而不相互衝突。 

(2)               聲明爲靜態的函數不能被其餘源文件所調用,由於它的名字不能獲得。ios

相關文章
相關標籤/搜索