c語言中函式可以分為static和非static兩種,這兩種函式在使用上會有一些不同,具體如下
(1)定義的位置
static函式可以定義在.h檔案以及.c檔案中
非static函式只能定義在.c檔案中
(2)作用範圍
static函式只能作用於本檔案中,這裡也要看情況,具體如下
1. 當static 函式定義在 .c 檔案中,那麼該static函式就只作用於本檔案中,其他檔案可以定義同名的函式
2. 當static 函式定義在 .h 檔案中,那麼該static函式的表現和非static函式的表現有些類似,這是因為,當有其他檔案包含該標頭檔案時,在編譯時會將標頭檔案中的
內容也加入到本檔案中,所以本檔案中不能定義相同的函式
非static函式的範圍是全域性的(需要在.h 檔案中進行宣告),在gcc下檢視某乙個非static函式的彙編**,會發現有 .globl add 這樣的**,
總結:(1)static函式最好寫在.c 檔案中;如果要寫在 .h標頭檔案中,則也要保證呼叫的檔案中不含有相同的函式(同時可以和inline連用)
(2)非static 函式只寫在.c 檔案中,並且在 .h 檔案中進行宣告
static 函式 C 中的static
函式中的靜態變數 當變數宣告為static時,空間將在程式的生命週期內分配,其被存放在在全域性資料區。即使多次呼叫該函式,靜態變數的空間也只分配一次,前一次呼叫中的變數值通過下一次函式呼叫傳遞。這對於在c c 或需要儲存先前函式狀態的任何其他應用程式非常有用。ps 對於乙個完整的程式,在記憶體中的分...
C 中的static用法小結
static定義靜態全域性變數時 1.未初始化的靜態全域性變數被程式自動賦為0,好像不加static程式也會自動設為0,函式內部定義的變數如果不初始化就使用就會出錯,程式不會自動賦值 2.靜態全域性變數對工程裡面的其他檔案來說是不可用的,也就是乙個全域性變數變成靜態全域性變數之後,其他檔案可以定義相...
c 中static成員函式
1 只能訪問static成員變數,因為靜態成員函式沒有this指標,不能指向具體的物件,所以不能訪問普通的成員變數 2 在函式體內可以通過類名去呼叫static成員函式,3 主要目的是去訪問static成員變數 雖然宣告為普通成員函式也可以,但加上static語義更明確 static為什麼只被初始化...