C 语言中 int main 和 int main(void) 函数的区别

cserver side programmingprogramming更新于 2024/11/9 13:30:00

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
", 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
", a);       main(10);    }    return 0; }

输出

当执行上述程序时,它会产生以下结果 −

error

如果我们为 int main() 和 int main(void) 编写相同的代码,我们将得到一个错误。发生这种情况是因为 void 表示该函数不接受任何参数。

因此,尝试删除上述示例中 main 中的参数 10 并进行编译。因此,纠正后上述代码将如下所示 −

示例

#include <stdio.h>
int main(){
   static int a = 10;
   if (a--){
      printf("after decrement a =%d
", 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

相关文章