浅谈c/c++中main(),int main(),void main(),int main(void)四者之间的区别

一、主函数也是函数

  • 首先我们要了解C/C++中函数的定义,因为main函数也是函数,与其他函数的区别只是主函数是程序的主线而已,程序从它开始也在其中结束。一个函数由函数名、其前的类型标识符、其后小括号里声明的参数类型和参数名(这里的参数叫形参,即形式参数或虚拟参数)以及大括号里的函数主体构成。主函数main也不例外。

二、main前面用int还是void?

  • main前面的是类型标识符,也就是类型名,其决定的是函数返回值的类型,int指有返回值且返回值为整型,void表示“空"即没有返回值。

  • 很多时候函数是不需要返回值的,只作为语句执行就完成任务了,比如主函数main常常就是;有返回值的函数通常出现在表达式中,int i=rand();
    rand()返回一个随机值替代自身位置赋值给i,有返回值的函数定义其返回值类型可以各式各样,有int有char有float有double。

  • 对于主函数,我们常常只要程序执行它,并不需要它的返回值,所以有人用int main加上return 0,有的直接用void main.。但最后制定标准的人说了:"main’must return ‘int’,其他的乱七八糟的返回值类型都不行,void也不行,以此盖棺定论。只返回int,这大概就是main作为一个主函数的尊严,本身没什么意义就是,毕竟return0都不需要你自己加,编译器就代劳了。

  • 所以对于其他花花绿绿的函数,主函数main前只能动加int(就好比主函数只能用main表示一样,只是这么规定而已),老的编译器可能还能用void,但现在的严的编译器大多默认int,用void会报错。

  • 顺便说一句,void main()或void main(void)是写程序的人根据函数原型自行发明的,C和C+标准中可从来没有定义过void main。

  • 再偷偷告诉你,如果你受不了强权的话你可以直接用main()省略int,不过这也,只是以前的写法,早晚会在渐渐的标准化中被淘汰,当然编译器是不大会报错的就是了。

三、int main()的小括号里加不加void?

  • 有参数的要写上对应数目的参数数据类型和参数名,没有参数的就不写或写上void,大多数情况下main是不需要参数的.那么写上void如何?不如何,很好,非常正确。用int main(void)这种写法非常标准,当然用int main()也是被广泛接受的,两者都表示本主函数没有参数,以C和C++标准来看都是正确的。

四、在int main()后的主体里面能不能出现int类型的的东西?

不论返回值数据类型或者参数数据类型如何都不影响你在函数(不论主函数还是其他函数)主体内使用其他各种数据类型。*
上一个奇葩程序:

#include<iostream>
int main()
{  
    float a;
    double b;
    char c;
    float xy(short x,double y,int z);//函数定义在主函数之前时可省略此声明语句。
    std::cout<<xy(1,1,1);
}
float xy(short x,double y,int z)
{
    float a=3.1;
    char b='a';
    int c=1;
    return a;//最好返回的值对应float数据类型,否则会将对应二进制码按float规则强制转换,至于报错是不可能报错的。
}

五、总结

  • main():相当于int main()
  • int main():int是main()函数的返回类型。这表明main()函数返回的值是整数且授受任何数量的参数。
  • void main():void为空型。这表明main函数无返回值目受任何数量的参数。
  • int main(void):main不接受任何参数且返回的值是整数。
    另外请注意:
  • main()为老式的写法。返回类型int在新型的编泽器通不可以省略,否则会有警告:
  • void main()为老式的写法。6.0及之前的vC使用这祥的写法。
  • int main()和int main(void)为新的写法.
  • 在C/C++中声明主函数要么写成int main(),要么写成int main(void)。main()、void main()和void main(void)这三种写法尽量放弃。

强烈建议下面这种形式,嘎嘎规范

int main()
{ 
return 0; /* 新标准主函数的返回值这条语句可以省略 */ 
} 
  • 68
    点赞
  • 264
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不熬夜,早点睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值