靜態儲存方式和動態儲存方式
靜態儲存方式是指在程式執行期間由系統分配固定的儲存空間的方式。
動態儲存方式是在程式運氣期間根據需要進行動態的分配儲存空間的方式。
記憶體中供使用者使用的儲存空間分為三個部分
(1)程式區;
(2)靜態儲存區;
(3)動態儲存區。
c的儲存型別包括四種:自動的(auto),靜態的(static),暫存器的(register),外部的(extern)。
自動變數:如果不專門宣告為靜態儲存類別,都是動態的分配儲存空間的。
靜態變數:
①:在函式體內,乙個被宣告為靜態的變數在這一函式被呼叫的過程中維持其值不變。
②:在模組內(但在函式體外),乙個被宣告為靜態的變數可以被模組內所有函式訪問,但不能被模組外的其他函式訪問。它是乙個本地的全域性變數。
③:在模組內,乙個被宣告為靜態的函式只可被這一模組內的其他函式呼叫。也就是說,這個函式被限制在宣告它的模組的本地範圍內使用。
暫存器變數:一般情況下變數的值都是存放在記憶體中的。為提高程式的執行效率,允許將區域性變數的值放在cpu中的暫存器中,需要用時直接從暫存器取出參加運算。現在的編譯系統能夠自動識別使用頻繁的變數從而自動的將這些變數放在暫存器中。
外部變數:作用是擴充套件外部變數的作用域,也可以擴充套件檔案的作用域。不專門的宣告為靜態變數,預設為外部變數。引用時使用extern宣告即可。
從作用域角度分,有區域性變數和全域性變數。
區域性變數:
①:自動變數,即動態區域性變數。(離開函式,值就消失)
②:靜態區域性變數。(離開函式,值保留)
③:暫存器變數。(離開函式,值就消失)
(④:形參可以定義為自動變數或暫存器變數。)
全域性變數:
②:外部變數。(即非靜態的外部變數,允許其他檔案引用)
從變數的生存期分有動態儲存和靜態儲存。
動態儲存:
①:自動變數。(本函式內有效)
②:暫存器變數。(本函式內有效)
③:形式引數。(本函式內有效)
靜態儲存:
①:靜態區域性變數。(函式內有效)
③:外部變數。(用extern宣告後,其他檔案可用)
從變數值的存放位置。
記憶體中的靜態儲存區:
①:靜態區域性變數。
②:靜態外部變數。(函式外部靜態變數)
③:外部變數。
記憶體中的動態儲存區:
自動變數和形式引數 。
cpu中的暫存器:
暫存器變數。
變數的儲存方式和生存期
一 儲存空間的情況 使用者區程式區 靜態儲存區 動態儲存區 靜態儲存方式 在程式執行期間由系統分配固定的儲存空間的方式。動態儲存方式 在程式執行期間根據需要進行動態的分配儲存空間的方式。二 資料儲存位置 靜態儲存區 全域性變數全部存放在靜態儲存區。動態儲存區 1 函式形式引數。2 函式中定義的沒有用...
變數的儲存方式和生存期
從變數的作用域 即從空間 角度來分,可以分為全域性變數和區域性變數。另乙個角度,從變數值存在的作時間 即生存期 角度來分,可以分為靜態儲存方式和動態儲存方式。靜態儲存方式 是指在程式執行期間分配固定的儲存空間的方式。動態儲存方式 是在程式執行期間根據需要進行動態的分配儲存空間的方式。使用者儲存空間可...
變數生存期
統計共呼叫counter 函式多少次。count.c檔案 include intmain mycounter.c counter 函式 void counter 函式宣告 void counter 執行結果為 count 1,結果不對。因為counter 函式中的count是區域性變數,自動儲存,每...