免費開始練習
中山大學(後西醫) 113年 計算機概論與程式設計

第 39 題

The following code in C program
char str[] = "NSYSU";
is equivalent to which of the following option?
  • A char str[] = {'N', 'S', 'Y', 'S', 'U'};
  • B char str[5] = {'N', 'S', 'Y', 'S', 'U', '\0'};
  • C char str = {'N', 'S', 'Y', 'S', 'U'};
  • D character str[] = {'N', 'S', 'Y', 'S', 'U', '\0'};
  • E char str[] = {'N', 'S', 'Y', 'S', 'U', '\0'};

思路引導 VIP

如果你在一排箱子裡依序放入字母,而電腦在讀取時只知道箱子的起點,卻不知道後面還有多少個箱子,你覺得我們應該在最後一個字母後面的箱子放進什麼樣的「特殊信號」,才能讓電腦知道該在那裡停下來,而不會繼續讀到後面其他無關的資料呢?

🤖
AI 詳解 AI 專屬家教

恭喜你正確答對了這題!你能精確辨識出 C 語言中字串定義的細節,代表你對記憶體配置有非常紮實的基礎觀念。

字串與字元陣列的對等關係

在 C 語言中,當我們使用雙引號定義一個字串字面量(String Literal),例如 "NSYSU" 時,編譯器會在記憶體中自動為這個字串補上一個空字元(Null Terminator),也就是 \0。因此,這行程式碼實際上在記憶體中佔用了 6 個位元組(Bytes)。選項 (E) 透過手動列舉字元的方式,完整還原了包含結束符號在內的陣列內容,與原題目完全等價。

▼ 還有更多解析內容
📝 C 語言字串初始化
💡 C 語言字串以雙引號定義時,結尾會自動附加空字元 \0。
比較維度 雙引號字串 VS 字元陣列列表
書寫方式 "NSYSU" — {'N','S',...,'\0'}
結束符號 \0 自動編譯添加 — 必須手動撰寫
佔用空間 長度 + 1 — 長度 + 1
💬兩者在記憶體中結構完全一致,皆以 \0 結尾。
🧠 記憶技巧:VIP 會員可查看這題的記憶口訣與速記法
⚠️ 常見陷阱:VIP 會員可查看這題最常被誘答的陷阱整理
sizeof 運算子 strlen 函數 記憶體佈局

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題