一、主函数也是函数
- 首先我们要了解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,不过这也,只是以前的写法,早晚会在渐渐的标准化中被淘汰,当然编译器是不大会报错的就是了。文章来源:https://www.toymoban.com/news/detail-715299.html
三、int main()的小括号里加不加void?
- 有参数的要写上对应数目的参数数据类型和参数名,没有参数的就不写或写上void,大多数情况下main是不需要参数的.那么写上void如何?不如何,很好,非常正确。用int main(void)这种写法非常标准,当然用int main()也是被广泛接受的,两者都表示本主函数没有参数,以C和C++标准来看都是正确的。
四、在int main()后的主体里面能不能出现int类型的的东西?
不论返回值数据类型或者参数数据类型如何都不影响你在函数(不论主函数还是其他函数)主体内使用其他各种数据类型。*
上一个奇葩程序:文章来源地址https://www.toymoban.com/news/detail-715299.html
#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; /* 新标准主函数的返回值这条语句可以省略 */
}
到了这里,关于浅谈c/c++中main(),int main(),void main(),int main(void)四者之间的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!