免費開始練習
hce_nsysu 113年 計算機概論與程式設計

第 39 題

The following code in C program
```c
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 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題