錯誤代碼:
void dd(char* c) { /* 反轉字串 */ }
int main() {
char c[] = "123";
printf("%s", dd(c)); // 錯誤:dd 返回 void,不能作為 %s 參數
}
`dd` 宣告為 `void`,**沒有返回值**,`printf("%s", dd(c))` 試圖把「無」當字串指標傳給 `%s`,編譯器報 `invalid use of void expression`。
dd(c); // 先呼叫函式,原地修改陣列 c
printf("%s", c); // 再印出修改後的 c
char* dd(char* c) {
// ... 反轉邏輯
return c; // 返回同一指標
}
int main() {
char c[] = "123";
printf("%s", dd(c)); // 現在合法
}
若函式需修改呼叫者陣列內容,**傳指標並原地修改**是 C 語言慣用模式;若習慣鏈式呼叫,可回傳同一指標。