C語言中static exterrn關鍵字的用法

2021-08-30 13:21:02 字數 1361 閱讀 8531

在大一學習的時候,只學習了c語言的基本的語法,並沒有學習和使用過static、external等關鍵字,所以現在總結一些以前沒有用到或很少用過的知識點。

變數的儲存型別是指儲存變數的記憶體型別。有三個地方可以儲存變數:普通記憶體、執行時堆疊、硬體暫存器。

普通記憶體:凡是在**塊之外宣告的變數總是儲存於靜態記憶體中,在程式的整個執行期間始終存在。

執行時堆疊:在**塊內部宣告的變數預設儲存於堆疊中,當程式執行到宣告**塊時被建立,離開塊被銷毀。如果該**塊被數次執行,這些變數每次將會被重新建立。

硬體暫存器變數暫時不需要考慮。

如果想要在**塊內部宣告的變數在離開**塊後不會被銷毀,下一次執行還要繼續使用,可以在變數的宣告中加入static關鍵字。乙個例子:

#include void func();

int main()

void func()

上面的**中加入static的宣告的變數,在離開**塊再次進入**塊依然被保留。

總結:static關鍵字在**塊內部用於變數的宣告時,static關鍵字用於修改變數的儲存型別變為儲存在靜態記憶體中的靜態變數。

注意:雖然修改了變數的儲存型別,但沒有改變區域性變數的作用域,依然不能再其他**塊中使用這個變數,只能在當前**塊中訪問。

上面第一條中的static的一種用法只能修飾在**塊內部的區域性變數,改變其儲存型別,static關鍵字還有其他的用法。

識別符號的鏈結屬性決定如何處理在不同檔案中出現的同名識別符號。鏈結屬性一共三種 external(外部)、internal(內部)、none(無)。

一般來說函式、全域性變數的鏈結屬性是external。

static關鍵字可以將鏈結屬性由external改變為internal,使全域性變數和函式為當前原始檔私有。其他檔案中也有同名的變數和這個私有的無關。static關鍵字只對預設為external的識別符號生效。

extern加在變數(全域性變數)或函式的宣告前,表示「這個變數或函式在別處定義,要在此處引用」。

函式和全域性變數的宣告不加extern也可能可以正確地引用,但是最好還是加上extern。

extern:用於宣告變數(函式)告訴編譯器,這個變數(函式)在其他地方有定義。

static:1.修飾區域性變數,改變變數的儲存型別,使其在整個程式執行期間始終存在。

2.修飾全域性變數,改變變數的鏈結屬性,由external改為internal,使其只能在當前原始檔使用。

3.修飾函式:同上。

C語言中的 ,

c語言中的 今天在分析乙份原始碼的時候遇到了如下 define uf call x report file line x,x static int report char file,int line,char call,int irc return irc 網上參考 cpp view plain c...

c語言中 作用

和 操作符是和 define巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串.例如,命令 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為 cout hello world endl 使用 鏈結 前後的...

C語言中enum,sizeof,typedef分析

事物的難度遠遠低於對事物的恐懼!這節我們來分析下enum,sizeof,typedef三個關鍵字。enum關鍵字 enum是c語言中的一種自定義型別 enum值是可以根據需要自定義的整型值 第乙個定義的enum值預設為0 預設情況下的enum值是在前乙個定義值的基礎上加1 enum型別的變數只能取定...