區分 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
廣告