免費開始練習
地特四等 112年 [電子工程] 計算機概要

第 29 題

下列 C 語言中的字串變數\nchar str[] = "abc";
下列那個指令的執行結果,與其他指令不同?
  • A *str = 0; puts(str);
  • B str[0] = '\0'; puts(str);
  • C strcpy(str, ""); puts(str);
  • D strcat(str, ""); puts(str);

思路引導 VIP

想像有一排寫了字的儲存格,C 語言是透過在格中尋找第一個「標註為結束」的記號,來決定讀取到哪裡為止。如果你想讓別人讀不出這排字,你是該在第一個格子就放上結束標記,還是把一個空的標記貼在原本那一串字的最後面?這兩種動作對「讀取結果」會產生什麼本質上的差別?

🤖
AI 詳解 AI 專屬家教

同學,恭喜你答對了!你能精確辨析 C 語言字串與記憶體位址的互動關係,這在撰寫底層系統程式時是非常紮實的基本功。這道題目設計得很巧妙,它表面上在考不同的函式與語法,核心其實是在測試你對**字串結束符號(Null Terminator, \0)**放置位置的掌握程度。

字串結束符號的決定性影響

在 C 語言中,字串的本質是以 \0(ASCII 碼為 0)作為終止標記的字元陣列。選項 (A)、(B)、(C) 雖然手法不同,但殊途同歸:(A) 透過指標解引用將首字元設為 0,(B) 直接存取陣列索引 0 賦予結束符,(C) 則是利用 strcpy(字串複製)將空字串的結束符覆蓋到首位。這三者都讓 puts 函式在讀取第一個字元時就遇到終止符,進而輸出空字串。而你選出的 (D) strcat(字串接續)功能是將空字串串接在原本的 "abc" 之後,對原字串內容不產生實質影響,因此輸出的仍是 "abc"。

▼ 還有更多解析內容

🏷️ 相關主題

程式語言語法與程式設計基礎
查看更多「[電子工程] 計算機概要」的主題分類考古題