回覆列表
  • 1 # 出現在擦拭時

    區域性變數按照儲存形式可分為auto, static。 與auto型別(普通)區域性變數相比, static區域性變數有三點不同:1. 儲存空間分配不同auto型別分配在棧上, 屬於動態儲存類別, 佔動態儲存區空間, 函式呼叫結束後自動釋放, 而static分配在靜態儲存區, 在程式整個執行期間都不釋放. 兩者之間的作用域(有效範圍)相同, 但生存期不同.2. static區域性變數在所處模組在初次執行時進行初始化工作, 且只操作一次。3. 對於區域性靜態變數, 如果不賦初值, 編譯期會自動賦初值0或空字元, 而auto型別的初值是不確定的.特點: static區域性變數的”記憶性”與生存期的”全域性性”所謂”記憶性”是指在兩次函式呼叫時, 在第二次呼叫進入時, 能保持第一次呼叫退出時的值. 注意事項:1. “記憶性”, 程式執行很重要的一點就是可重複性, 而static變數的”記憶性”破壞了這種可重複性, 造成不同時刻至執行的結果可能不同.2. “生存期”全域性性和唯一性. 普通的local變數的儲存空間分配在stack上, 因此每次呼叫函式時, 分配的空間都可能不一樣, 而static具有全域性唯一性的特點, 每次呼叫時, 都指向同一塊記憶體, 這就造成一個很重要的問題 ---- 不可重入性!!!

  • 中秋節和大豐收的關聯?
  • 老年人最近身體發熱怎麼回事?