区分 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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告