C語言儲存類 鏈結

2021-10-01 05:16:37 字數 1964 閱讀 3833

儲存型別

c語言為變數提供了5種不同的儲存型別,或者稱為儲存類。

//注意:所用的儲存型別修飾變數和修飾函式的作用是一樣的

分別是:

> 自動儲存:  auto       //宣告乙個自動變數

> 靜態儲存: static //宣告乙個靜態變數,或宣告乙個內部連線函式和全域性變數

> 外部儲存: extem //宣告乙個暫存器儲存類變數

> 暫存器儲存:register //宣告乙個外部儲存變數

> 關鍵字: typedef //語法意義上的儲存類,與實際儲存型別無關

注意:所有不加儲存型別的變數和函式,都是自動儲存型別auto。

各種儲存型別可以根據不同角度來來描述,分別是

作用域 : 描述了程式中合法訪問乙個識別符號的區域。包括(**塊作用域、函式原型作用域、檔案作用域)

鏈結型別 : 跟作用域型別類似,變數的連線是乙個空間概念,描述了程式中合法訪問乙個識別符號的區域。包括(外部鏈結、內部鏈結、空鏈結)

儲存期 : 變數的宣告週期,描述了乙個c變數在程式中執行期間存在時間。包括(靜態儲存期、自動儲存期、動態儲存期)

>>int a;   

>>int fun();

//等於auto int a;

儲存位置:

區域性變數:存放在棧上

全域性變數:存放在全域性變數區

作用域:

區域性變數:在當前所在的{}中才可以使用

全域性變數:在整個.c檔案中都可以使用

生命週期:

區域性變數:離開自己的{}就會消亡

全域性變數:整個程序結束的時候才會被消亡

區域性變數:空鏈結

全域性變數:外部鏈結

>>extern

//將外部.c檔案中的變數或者函式在自己當前的.c檔案中做乙個外部宣告,然後就可以使用。

儲存位置:

區域性變數:儲存在別的.c檔案存放的記憶體上

全域性變數:儲存在別的.c檔案存放的記憶體上

作用域:

區域性變數:作用在自己當前的{}中

全部變數:作用在自己當前的.c檔案中

生命週期:

區域性變數:只有在該變數原本的程序結束之後,才會消亡

全域性變數:只有在該變數原本的程序結束之後,才會消亡

區域性變數:外部鏈結

全域性變數:外部鏈結

>>static

//當區域性變數和全域性變數重名的時候,優先使用區域性變數

//將變數或者函式限定在自己當前的作用域內,別人不可以引用

//凡是使用static修飾的變數,其值全部為0

儲存位置:

區域性變數:存放在全域性變數區//雖然在全域性變數區,但它還是區域性變數

全域性變數:存放在全域性變數區

作用域://static就是專門限定作用域的

區域性變數:在自己當前的{}中

全域性變數:在自己當前的.c檔案中

生命週期:

區域性變數:在整個.c檔案執行的過程中

全域性變數:在整個.c檔案執行的過程中

區域性變數:內部鏈結

全域性變數:內部鏈結

>>register

//暫存器儲存型別

儲存位置:

如果使用的很頻繁,就儲存在暫存器中

如果使用的很少,存放在棧上

作用域:

自動生命週期:

自動自動

各種儲存型別和特性總結如下:

用作用域、鏈結和儲存期來定義5中儲存型別

C語言儲存類 鏈結和記憶體管理總結

一 儲存類 作用域 乙個c變數的作用域可以是 塊作用域 在函式內部 塊中定義的變數 形參,稱為區域性變數 函式原型作用域 從變數定義處一直到原型宣告的末尾 或者檔案作用域 乙個在所有函式之外定義的變數,從定義處到包含定義的檔案結尾處都可見,稱為全域性變數 函式作用域 只適應於goto語句使用的標籤 ...

C 儲存類 鏈結 記憶體管理

用於儲存程式資料的記憶體可用儲存時期 作用域 鏈結來表徵。儲存時期可以是靜態的 自動的 或是分配的。如果是靜態的,內存在程式開始執行時被分配,並在程式執行時一直存在。如果是自動的,變數所用內在程式執行到該變數定義所在 塊時才開始分配,退出 塊時釋放。如果是分配的記憶體,記憶體通過呼叫malloc 分...

C語言儲存類

好久沒有寫過文章,今天閒來無事,就寫一篇文章解解悶,如有不到之處,請諒解。而今天談到的內容呢?就是c語言儲存類。1 儲存類有哪幾種?自動 auto 靜待 static 暫存器 register 外部 extern 四大類。2 什麼是自動 auto 舉個栗子 auto int a,而a呢?就是儲存方式...