了解計算機的都知道記憶體有很多種,比如暫存器,記憶體,記憶體中又有很多段,**段,資料段,堆疊等等與程式設計相關的,資料段還可以細分,初始化的,未初始化的,唯讀的等等。所以乙個變數,可以在多種地方儲存。變數的儲存型別就是告訴變數儲存在哪些地方的,雖然這麼說不太嚴謹,因為有暫存器型別的導致的,但是可以這麼理解。最重要的是根據變數的儲存型別可以確定變數的生命週期。這個很好理解,棧的變數和堆的變數以及資料段的變數生命週期肯定是不一樣的,應為棧的變數在出棧後就不能用了,堆裡的變數free後就不能用了。
我們把內存在這裡分成三類,暫存器,執行時的堆疊,普通記憶體。就是把除了暫存器的內存在另乙個角度看待又分了一下。
具有**塊型別的變數的儲存型別是auto,對應的是堆疊中,離開**塊後變數便銷毀了。但是如果在**塊中的變數被static修飾後,它的儲存型別就變成了靜態,對應的是普通記憶體。
auto型別的變數被register修飾後,它都有可能被存放到暫存器中,之所以說是有可能是因為,乙個cpu裡暫存器的數量非常少,而且暫存器都有不同的作用,所以給我們使用的暫存器不多,如果可以的話,cpu就把我們的變數存到暫存器,因為它只能修飾auto變數,所以它的宣告週期和auto一樣。
c語言 儲存型別
c中的每乙個變數和函式都有兩個屬性 型別 type 和儲存型別 storage class 儲存型別分別是auto 自動 extern 外部 register 暫存器 static 靜態 1.auto 在函式體中定義的變數預設是auto.當進入 塊 block 時,系統為自動變數分配記憶體.在塊內,...
C語言 變數儲存型別
c語言中,變數儲存型別指的是儲存變數的記憶體的型別,主要分為三種 普通記憶體 執行時堆疊 硬體暫存器。變數儲存在那種型別的記憶體中和變數的作用域有很大的關係。首先,分析一下變數的作用域。作用域與宣告的位置有關。在乙個原始檔中,變數宣告的位置有兩種 在 塊內和 塊外。塊指的是被花括號 包圍的一段 1 ...
c語言變數儲存型別
在c語言中變數大致分為四種型別它們分別 1 auto 自動變數 2 register 暫存器變數 3 static 靜態變數 4 extern 外部變數 一般形式 儲存型別說明符 資料型別說明符 變數名,變數名 static int i,j auto char c,d static int a 1 ...