考虑main()的以下两个定义。

int main()
{/* */
return 0;
}

    和

int main(void)
{/* */
return 0;
}

    有什么区别?
    在C ++中,没有区别,两者相同。
    这两个定义在C语言中也都适用,但是第二个带有void的定义在技术上被认为是更好的,因为它清楚地指定只能在没有任何参数的情况下调用main。
    在C语言中,如果函数声明没有指定任何参数,则意味着可以使用任意数量的参数或不使用任何参数来调用函数。例如,尝试编译并运行以下两个C程序(记住将文件另存为.C)。注意fun()的两个声明之间的区别。

// Program 1 (Compiles and runs fine in C, but not in C++)
void fun() { }
int main(void)
{fun(10, "GfG", "GQ");return 0;
}

    上面的程序编译并运行良好,但下面的程序编译失败。

// Program 2 (Fails in compilation in both C and C++)
void fun(void) { }
int main(void)
{fun(10, "GfG", "GQ");return 0;
}

    不同于C,在C++中,上述两个程序编译失败。在C++中,fun() 和fun(void) 都是相同的。
    因此区别在于,在C中,可以用任意数量的参数调用 int main(),但是只能在没有任何参数的情况下调用 int main(void)。尽管在大多数情况下,并没有什么区别,但是在C语言中建议使用“int main(void)”。
    练习:
    预测以下C程序的输出。
    问题1:

#include <stdio.h>
int main()
{static int i = 5;if (--i){printf("%d ", i);main(10);}
}

    答案:

4 3 2 1

    问题2:

#include <stdio.h>
int main(void)
{static int i = 5;if (--i){printf("%d ", i);main(10);}
}

    答案:

编译报错
参考文档

[1]GeeksforGeeks.Difference between “int main()” and “int main(void)” in C/C++?[EB/OL].https://www.geeksforgeeks.org/difference-int-main-int-mainvoid/,2018-09-07.

C/C++中“int main()”和“int main(void)”的区别相关推荐

  1. 编写一个判别素数(质数)的函数 int isPrime(int x)。在 main 函数中,输入一个正整数 n,输出 1~n 之间的所有素数以及素数的个数

    编写一个判别素数(质数)的函数 int isPrime(int x).在 main 函数中,输入一个正整数 n,输出 1-n 之间的所有素数以及素数的个数 #include<stdio.h> ...

  2. C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程

    目录 一.main 函数写法 二.main 函数参数简介 三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件 b.打开 cmd 命令行窗口执行 exe 文件 c.打 ...

  3. void main和int main的区别

    其实main也是一个函数: #include<stdio.h> void main(){ } 如上代码所示,void main() 这样定义只是说明main函数没有返回值. #includ ...

  4. Matcher 类中的group(),group(int i),groupCount()

    2019独角兽企业重金招聘Python工程师标准>>> Matcher 类中的group(),group(int i),groupCount() 2013-11-17 23:57 4 ...

  5. 从C#中的枚举获取int值

    我有一堂课,叫做Questions (复数). 在此类中,有一个名为Question (单数)的枚举,它看起来像这样. public enum Question {Role = 2,ProjectFu ...

  6. java中set怎么建int型_使用Array.setInt来填充Java中的数组

    为了填充Java中的数组,我们使用Array.setInt()方法.java.lang.reflect.Array.setInt(Object array,int index,int value)方法 ...

  7. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  8. C++中new int()与new int[]区别

    1.new int[] 是创建一个int型数组,数组大小是在[]中指定int * p = new int[3]; //申请一个动态整型数组,数组的长度为[]中的值 2.new int()是创建一个in ...

  9. Java中int数字_java int 比较数值里面是否有某个数字

    展开全部 先转成32313133353236313431303231363533e78988e69d8331333365656532String 然后用String类提供的indexOf或者conta ...

  10. Java中的byte[]/char[]/int/String数据类型转换

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51743969 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

最新文章

  1. Java图形化界面设计——容器(JFrame)
  2. CPU使用率的几个重要指标含义列举
  3. 《数据库系统实训》实验报告——存储过程
  4. linq to entity 基础
  5. 嘉实多RO150合成齿轮油
  6. 计算机用户权限设置不了,电脑中怎样设置everyone权限
  7. java怎么将图片文件转流并在jsp前端显示_web前端—面试题汇总(001-005)
  8. logistic公式形式的由来,从广义线性回归说起
  9. Unity 2D 跑酷道路动起来
  10. scala 写入文件_Scala文件IO –写入文件,读取文件
  11. 忽略字母大小写情况下统计字符出现的次数
  12. 第二十五篇:稳定性之灰度发布
  13. 机器学习-决策树之分类树python实战(以红酒数据集为例)(二)
  14. P6615 Kruskal + 构造
  15. STM32实战总结:HAL之触摸屏
  16. Java数据库插入记录的语句-单引号-双引号values('username+'-'+password
  17. Python破解pdf打开密码
  18. Android备考01 黑马76期-day03 操作数据库
  19. oracle 查询temporary table,Oracle临时表(Temporary Table)
  20. 滴水逆向win32学习笔记1

热门文章

  1. 简述电子计算机的用途和特点_华南理工大学2013春计算机基础作业1 -
  2. TeX Live + Texmaker 组合下使.tex文件支持中文的设置方法
  3. 用青龙跑应用试客(收益很稳定)
  4. svn revert详解
  5. 洛谷:P1434 [SHOI2002] 滑雪 题解
  6. Android 友盟分享图片太大打开微信慢
  7. 生成免费的证书.acme 基于nginx
  8. Sketch之Symbol使用
  9. https://blog.csdn.net/lu_embedded/article/details/82997438
  10. 存储网关CSG助力企业上云