首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言函式參數:空參數表 () 與 (void) 的關鍵差異

     編輯:關於C語言

核心結論

  • int foo(void):**明確宣告不接受任何參數**,呼叫時傳參會產生**編譯錯誤 (error)**
  • int foo():**舊式宣告,參數表未指定**,呼叫時傳參僅產生**警告 (warning)**,實際忽略參數

程式碼驗證

// int add();        // 舊式宣告
int add(void);       // 現代宣告:不接受參數

int main(void) {
    int i = add(5, 6);  // 傳遞兩個參數
    printf("%d\n", i);
    return 0;
}

int add(a, b) {        // 老式定義:參數型別預設 int
    return a + b;
}

編譯器行為對比

宣告方式呼叫 add(5,6) 結果C 標準
int add();警告 (warning):參數過多,但編譯通過C89/C99 相容
int add(void);錯誤 (error):參數不匹配,編譯失敗C89 起標準語法

最佳實務

永遠使用 (void) 明確表示無參數。這不僅符合現代 C 標準 (C99/C11/C18),更能讓編譯器捕捉呼叫端錯誤,避免無聲的 Bug。

補充知識:C 語言函式檢查以**函式名稱**為主,參數表檢查較寬鬆。舊式定義 int add(a, b) 參數型別預設為 int,現代寫法應為 int add(int a, int b)。

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