C中的static函式小結

2021-06-18 08:07:57 字數 589 閱讀 9258

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為什麼只被初始化...