static和全域性變數和區域性變數的問題

2021-07-10 06:52:23 字數 555 閱讀 4608

在c語言中,static有好幾種作用,下面介紹:

1.隱藏的作用

比如說我們在乙個源**檔案中定義了乙個整型變數a(全域性變數)。那麼在整個專案中a都是可見的,如果在其前面加上static,那麼a此時變成了乙個靜態的全域性變數,此時a只能被本源**檔案中引用,對其他**檔案是隱藏的,對於函式來說static也具有隱藏的作用。

2.變數持久化的作用

static修飾的變數全部儲存在靜態資料區,在靜態資料區的變數在一開始就會被初始化,並且只能被初始化一次。全域性變數也是如此,只不過被static修飾的全域性變數相對於其他檔案的**來說被隱藏了而已。

3.預設初始化0

static可以預設初始化為0.另外全域性變數也可以預設初始化為0.在靜態資料區,位元組的預設值全部是0x00。

附:static修飾的全域性變數和普通的全域性變數都是靜態儲存方式,但是static修飾的全域性變數改變了它的作用域;

static修飾的區域性變數和普通的區域性變數,前者改變了變數的生存週期,static修飾區域性變數只被初始化一次,這次沿用上次的值

static全域性 區域性變數,全域性變數及區域性變數

1 static變數和全域性變數都是分配在 靜態儲存區 2 static全域性變數 static區域性變數 全域性變數和區域性變數區別 他們都是分配在 靜態儲存區內,都是在程式開始的時候初始化的,他們的區別是作用域不同,static全域性變數作用域是在申明所在的檔案中,而全域性變數是全域性的,其他檔...

static修飾的全域性變數和區域性變數

static修飾的全域性變數和區域性變數 int main system pause return 0 int main system pause return 0 void text int main void text int main int num 1 void text int main ...

static函式修飾全域性變數和區域性變數

staticinta 1 voidfun1 void voidfun2 void voidfun3 void intmain intargc,char args 結果是 1 2 2 2對於static修飾全域性變數,最主要的作用就是限定了這個全域性變數的作用範圍,不可以被其他類,其他檔案引用。全域性...