• 浅谈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
    int main()
    {  
        float a;
        double b;
        char c;
        float xy(short x,double y,int z);//函数定义在主函数之前时可省略此声明语句。
        std::cout<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    五、总结

    • 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; /* 新标准主函数的返回值这条语句可以省略 */ 
    } 
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    go使用dlib人脸检测和人脸识别
    linux:vi和vim的使用
    SpringBoot基础2——运维实用
    蓝桥杯 第 2 场算法双周赛 第4题 通关【算法赛】c++ 优先队列 + 小根堆 详解注释版
    好好学习第二天:服装图像分类
    准备pmp考试第12天
    Spring 事务
    Tomcat
    Jenkins流水线变量运算
    ThreadPoolExecutor 类
  • 原文地址:https://blog.csdn.net/weixin_44057803/article/details/127641967