儲存型別
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呢?就是儲存方式...