首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言 `printf("%s", dd(c))` 報 invalid use of void expression:void 函式無返回值,改為先呼叫函式再印陣列

     編輯:程式設計疑難解答

錯誤代碼:


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* 以利鏈式呼叫


char* dd(char* c) {
    // ... 反轉邏輯
    return c; // 返回同一指標
}
int main() {
    char c[] = "123";
    printf("%s", dd(c)); // 現在合法
}

若函式需修改呼叫者陣列內容,**傳指標並原地修改**是 C 語言慣用模式;若習慣鏈式呼叫,可回傳同一指標。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved