区分 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
广告