區分 C 語言中的 int main 和 int main(void) 函式


int main 表示函式在程式執行結束時返回某個整數,即使是 '0'。'0' 表示程式執行成功。

int main 的語法如下:

int main(){
   ---
   ---
   return 0;
}

int main(void) 表示該函式不接受任何引數。假設,如果我們在括號中不保留 void,則該函式將接受任意數量的引數。

int main(void) 的語法如下:

int main(void){
   ---
   ---
   return 0;
}

實際上,兩者看起來似乎相同,但是,從技術上講,int main(void) 更好,因為它明確指出 main 只能在沒有任何引數的情況下被呼叫。

通常,在 C 語言中,如果函式簽名未指定任何引數,則表示該函式可以接受任意數量的引數或不接受任何引數。

讓我們採用相同的邏輯來實現這兩個函式的程式碼。這兩個函式唯一的區別在於語法。

示例 1

下面是 int main() 函式(無引數)的 C 程式:

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main(10);
   }
   return 0;
}

輸出

執行上述程式時,將產生以下結果:

after decrement a =9
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0

示例 2

下面是相同的程式,但使用了 int main(void) 函式:

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main(10);
   }
   return 0;
}

輸出

執行上述程式時,將產生以下結果:

after decrement a =9
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0

如果我們為 int main() 和 int main(void) 編寫相同的程式碼,我們將收到錯誤。這是因為 void 表示函式不接受任何引數。

因此,嘗試在上述示例中刪除 main 中的引數 10 並進行編譯。因此,在修正後,上述程式碼將如下所示:

示例

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d\n", a);
      main();
   }
   return 0;
}

輸出

執行上述程式時,將產生以下結果:

after decrement a =9
after decrement a =8
after decrement a =7
after decrement a =6
after decrement a =5
after decrement a =4
after decrement a =3
after decrement a =2
after decrement a =1
after decrement a =0

更新於: 2023-12-08

15K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告