首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言儲存類別:register 變數特性與選項分析

     編輯:C 語言問答

C 語言儲存類別考題解析:唯有在使用時才佔用記憶體單元的是?

題目

在 C 語言中,只有在使用時才佔用記憶體單元的變數,其儲存類別是 ( )

A. auto register
B. extern register
C. auto static
D. static register

正解:A

詳細解析

儲存類別記憶體配置時機生命週期備註
auto (區域預設)函數進入時配置於堆疊函數執行期間「使用時才佔用」的典型代表
register建議編譯器放入暫存器,**不佔用記憶體位址**函數執行期間若暫存器不足退化為 auto,同樣「使用時才佔用」
static (區域靜態)程式啟動時配置於資料段整個程式執行期間**一直佔用記憶體**,不符合題意
extern / static (全域)程式啟動時配置整個程式執行期間**一直佔用記憶體**

排除法邏輯

  1. static 變數 (選項 C、D) 在程式啟動時即配置記憶體,直到程式結束,**不符合「只有在使用時才佔用」** → 排除 C、D。
  2. extern 只是宣告外部連結,實體定義處決定儲存類別,通常為靜態儲存 → 排除 B。
  3. 剩下 auto (區域自動變數) 與 register (暫存器變數) 皆在函數呼叫時配置、返回時釋放,符合題意 → 選 A。

補充知識

  • register 關鍵字在現代編譯器 (GCC, Clang, MSVC) 中多為提示,編譯器自行決定最佳配置 (暫存器或堆疊),程式設計師不可強制要求。
  • register 變數**無法取址** (&var 編譯錯誤),因為可能不在記憶體中。
  • 遞迴函數的區域變數每次呼叫都會重新配置獨立記憶體空間,互不干擾。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved