int add(int a, int b)
static int add2(int a, int b)
這兩個函式實現的功能完全相同(兩個數相加);
忽略函式名不一樣,唯一的區別就是函式2的返回值前面多了static關鍵字
那麼加上static與不加有什麼區別呢?
簡單說函式1可以被整個源程式的其他檔案呼叫,而函式2的作用於侷限在本檔案(code.c)。
如果把函式宣告為static型別,則該函式名除了對該函式宣告的檔案可見外,其他檔案都無法訪問。也就是只能被本檔案中的函式呼叫,而不能被同一程式中的其他檔案的函式呼叫。static可以限定變數或函式為靜態儲存。static限定的變數或函式不會和同一程式中其他檔案同名的相衝突。如果用static限定內部變數,則該變數從程式一開始就用有記憶體,不會隨其所在函式的呼叫和退出而分配和消失。
by yu-share
靜態函式與非靜態函式的區別
靜態成員函式和非靜態成員函式的根本區別在於有無this指標。非靜態函式由物件名或者物件指標 呼叫,呼叫時編譯器會向函式傳遞this指標 靜態成員函式則由類名 或者物件名呼叫 非靜態函式中有this指標,靜態函式中沒有this指標,不能訪問物件的成員函式,成員函式有this指標,const修飾this...
c靜態函式
c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。5 堆 動態儲存...
靜態函式呼叫
include class point static void init 靜態成員函式 呼叫1 非靜態成員函式和非靜態成員屬於物件的方法和資料,也就是先產生類的物件,然後通過類的物件去引用。void main 呼叫2 靜態成員函式和靜態成員變數屬於類本身,在類載入的時候,即為它們分配了空間,所以可通...