C語言中的static

2022-07-17 13:45:15 字數 562 閱讀 5099

了一下,都說static有以下作用:

1.使得當前檔案中的函式或者變數對於其他檔案是隱藏了。

怎麼理解這句話呢?來看看下面這個例子

這裡我們定義了兩個檔案:

test.c

1

int num=100;

main.c

#includeextern

intnum;

intmain()

兩個檔案分別編譯鏈結,最後會發現輸出結果為100.也就是說test.c中定義的全域性變數對於main.c來講是可見的。

這裡如果我們將test.c改成下面的檔案:

static

int num=100;

對兩個檔案分別進行編譯,在鏈結的時候發爆出無法找到num的錯誤。

2.定義區域性靜態變數

當static用來修飾區域性變數時,便改變了區域性變數的儲存位置,將其從程式執行棧放置到靜態儲存區。但是區域性靜態變數在離開作用域後並沒有被銷毀,而是仍然停留在記憶體中,直到程式的結束,只不過在這個過程中我們無法對去進行訪問。

C 語言中的static

static 在c語言中,關鍵字 static 有三個明顯的作用 1 在函式體,乙個被宣告為靜態的變數在這一函式被呼叫過程中維持其值不變。2 在模組內 但在函式體外 乙個被宣告為靜態的變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問。它是乙個本地的全域性變數。3 在模組內,乙個被宣告為靜態的...

c語言中的static

1 用static宣告區域性變數 用關鍵字static宣告區域性變數為 靜態區域性變數 時,可以讓該區域性變數在函式呼叫結束後不消失而保留原值,即其占用的儲存單元不釋放。static int a 1 2 用static宣告外部變數 有時在程式設計中,希望某些外部變數只限於被本檔案引用,而不能被其他檔...

C語言中的static

c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。5 堆 動態儲存...