C語言筆錄 2 C 語言中 static

2021-10-16 12:10:21 字數 1111 閱讀 8705

c 語言中 static 的作用

1. 先來介紹它的第一條也是最重要的一條:隱藏。

當我們同時編譯多個檔案時,所有未加 static 字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是 a.c,另乙個是 main.c。

下面是 main.c 的內容、下面是 a.c 的內容:

int main

(void

)typedef struct

執行結果:a hello
你可能會問:為什麼在 a.c 中定義的全域性變數 a 和函式 msg 能在 main.c 中使用?前面說過,所有未加 static 字首的全域性變數和函式都具有全域性可見性,其它的原始檔也能訪問。此例中,a 是全域性變數,msg 是函式,並且都沒有加 static 字首,因此對於另外的原始檔 main.c 是可見的。

如果加了 static,就會對其它原始檔隱藏。例如在 a 和 msg 的定義前加上 static,main.c 就看不到它們了。利用這一特性可以在不同的檔案中定義同名函式和同名變數,而不必擔心命名衝突。static 可以用作函式和變數的字首,對於函式來講,static 的作用僅限於隱藏,而對於變數,static 還有下面兩個作用。

.2.static 的第二個作用是保持變數內容的持久

儲存在靜態資料區的變數會在程式剛開始執行時就完成初始化,也是唯一的一次初始化。共有兩種變數儲存在靜態儲存區:全域性變數和 static 變數,只不過和全域性變數比起來,static 可以控制變數的可見範圍,說到底 static 還是用來隱藏的。雖然這種用法不常見,但我還是舉乙個例子。

#include 

int fun

(void

)int count =1;

int main

(void

)

執行結果:

global local static110

2938

4756

6574

8392

101

c語言中的static和c 中的static比較

c語言中 static如果是修飾的全域性變數表示,該變數不能被其他檔案使用,函式也是一樣.如果修飾區域性變數,那麼,該變數存放在靜態區,只能被初始化一次,生命週期隨之檔案的結束而結束.c 中 static修飾的變數,只能在類外初始化,而且,必須初始化,可以由類直接訪問,可以在同族類中實現資料共享,在...

C語言快速入門(2) C語言中的資料型別

1.有名有姓的c 程式設計時給變數或者函式起的名字就是識別符號。2.變數及賦值 變數就是可以變化的量,而每個變數都會有乙個名字 識別符號 變數佔據記憶體中一定的儲存單元。使用變數之前必須先定義變數,要區分變數名和變數值是兩個不同的概念。就好比 住在房間裡的客人與房間號是兩個不同的概念。多個型別相同的...

C語言筆錄 1

define 識別符號 常量 注意,最後沒有分號 注釋 define 和 include 一樣,也是以 開頭的。凡是以 開頭的均為預處理指令 define又稱巨集定義,識別符號為所定義的巨集名,簡稱巨集。識別符號的命名規則與前面講的變數的命名規則是一樣的。define 的功能是將識別符號定義為其後的...