記憶體用於儲存程式中的資料,由儲存期、作用域和鏈結表徵。儲存期可以是靜態的、自動的或動態分配的。如果是靜態儲存期,在程式開始執行時分配記憶體,並在程式執行時都存在。如果是自動儲存期,在程式進入變數定義所在塊時分配變數的記憶體,在程式離開塊時釋放記憶體。
如果是動態分配儲存期,在呼叫malloc()(或相關函式)時分配記憶體,在呼叫free()函式時釋放記憶體。作用域決定程式的哪些部分可以訪問某資料。定義在所有函式之外的變數具有檔案作用域,對位於該變數宣告之後的所有函式可見。
定義在塊或作為函式形參內的變數具有塊作用域,只對該塊以及它包含的巢狀塊可見。鏈結描述定義在程式某翻譯單元中的變數可被鏈結的程度。具有塊作用域的變數是區域性變數,無鏈結。具有檔案作用域的變數可以是內部鏈結或外部鏈結。內部鏈結意味著只有其定義所在的檔案才能使用該變數。外部鏈結意味著其他檔案使用也可以使用該變數。下面是c的5種儲存類別(不包括執行緒的概念)。
下面是c的5種儲存類別(不包括執行緒的概念)。
型別限定符const、volatile、restrict和_atomic。const限定符限定資料在程式執行時不能改變。對指標使用const時,可限定指標本身不能改變或指標指向的資料不能改變,這取決於const在指標宣告中的位置。volatile限定符表明,限定的資料除了被當前程式修改外還可以被其他程序修改。該限定符的目的是警告編譯器不要進行假定的優化。restrict限定符也是為了方便編譯器設定優化方案。restrict限定的指標是訪問它所指向資料的唯一途徑。
C 的五種儲存類
自動 在乙個 塊內 或在乙個函式頭部作為參量 宣告的變數,無論有沒有儲存類修飾符auto,都是屬於自動儲存類,該類具有自動儲存類,該類具有自動儲存時期,作用域和空鏈結,如未初始化,它的值是不一定的。暫存器 在乙個 塊內 或在乙個函式頭部作為參量 使用寄存類修飾符 register宣告的變數,屬於暫存...
C語言5種儲存型別
1.自動變數 預設情況下,在 塊或函式的頭部定義的任意變數都屬於自動儲存類。自動儲存時期意味著程式在進入包含變數宣告的 塊時,變數開始存在。當程式離開這個 塊時,自動變數消失了。初始化,除非手動初始化,否則不會被自動初始化。2.暫存器變數 通常,變數儲存在計算機記憶體中。幸運的話可以儲存在cpu暫存...
c語言 儲存型別
c中的每乙個變數和函式都有兩個屬性 型別 type 和儲存型別 storage class 儲存型別分別是auto 自動 extern 外部 register 暫存器 static 靜態 1.auto 在函式體中定義的變數預設是auto.當進入 塊 block 時,系統為自動變數分配記憶體.在塊內,...