hce_nsysu
113年
計算機概論與程式設計
第 39 題
The following code in C program
```c
char str[] = "NSYSU";
```
is equivalent to which of the following option?
```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) 透過手動列舉字元的方式,完整還原了包含結束符號在內的陣列內容,與原題目完全等價。
▼ 還有更多解析內容