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

在C语言编程中通常会看到 **int main()、int main(void)、void main(void)、main()和main(void)、int main() 和 void

首先来看看标准的主函数写法是什么样的,在C99标准(ISO/IEC 9899:1999)的5.1.2.2.1 Program startup一节是这么描述的:

The function called at program startup is namedmain. The implementation declares noprototype for this function. It shall be defined with a return type ofintand with no
parameters:
int main(void) { // }
or with two parameters (referred to here asargcandargv, though any names may beused, as they are local to the function in which they are declared):
*int main(int argc, char argv[]) { // }
or equivalent;or in some other implementation-defined manner.

在程序启动时调用的函数是namedmain。该实现声明了这种函数的含有型。它应使用intindand的返回类型定义,没有
参数:

int main(void){/ ... /}

或者使用两个参数(参考ASARGCandargv,尽管可以享受任何名称,因为它们是所声明的函数的本地功能):

* int main(int argc,char argv []){/ ... /}

或等同物;或以其他一些实现定义的方式。

C89标准的main()函数是可接受的,尽管现在建议是使用C99的标准。**C99**标准只定义了如下两种可接受的函数原型:

int main ( void )

int main ( int argc, char *argv[] )

main() 这些用法,一直没有深入了解过。下面简单介绍一下各个的用法:

// 这样是正确的
int main()
{
  if (0) main(42);
}

// 这样会出错
int main(void)
{
  if (0) main(42);
}

C++ 中 int main() 和 int main(void) 是等效的,但在 C语言 中让括号空着代表编译器对是否接受参数保持沉默。在 C 语言中 main() 省略返回类型也就相当说明返回类型为 int 型,不过这种用法在 C++ 中逐渐被淘汰。虽然 void main()在很多系统都适用,但他毕竟不是标准的,所以应该避免这种用法, 应该使用这种 int main(void) 的写法比较妥当。

main()和main(void)
只声明 main 的话系统默认为 int main。void main 无论何时都不应该使用因为主函数必须有返回值表明程序运行状态
这两个main函数都不能接受参数。main()这种写法在C99标准以前的版本中使用,
int main(void) 指的是此函数的参数为空,不能传入参数,如果你传入参数,就会出错。

int main() 表示可以传入参数。

而在C99标准之后如果main函数不需要接受参数的情况下,会写做main(void)。

void main():

C语言从来没声明过void main(),只声明过main()。

抛弃一切用void main编写C程序的习惯!

参考链接和可深入理解C的其它链接:

main函数_百度百科:http://baike.baidu.com/link?url=QPL_sSuIxACVYcdTzY43iXtxLGWUPY8inpjL2hZZPFscJZehGeHPUlqf_qG2xPtKKY-tlZPrm78Rsw3TwM-D7a#4_3

C99_百度百科:http://baike.baidu.com/link?url=wGdu4AOAT462i_loNUmdUSqMYXoE-Dur0qQSuHRkXbdy-ib-wMnLp7rrJIwhh_tkf1fICH4JcUkMZ_4n_yIOy_

void main()还是int main()_百度贴吧:**http://tieba.baidu.com/p/2085028518

int main(int argc,char* argv[])详解:http://www.cnblogs.com/avril/archive/2010/03/22/1691477.html
  • 66
    点赞
  • 316
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值