C程序的入口是main函数,一般来说只要是正常运行结束的都是从main函数的第一句话开始,最后一句结束。

例如:int main()//程序开始

{

printf("Hello!

");

return 0;//程序结束,返回值

}

但如果程序执行到中间遇到 return(main函数里的) exit(不管是main函数还是子函数中) 等也是会结束程序的。

C语言main函数的写法

main函数是C程序的入口函数,即程序的执行是从main函数开始,对其他函数的调动也是直接或间接地在main函数中被调用。那么main函数又是被谁调用呢?答案是操作系统。C语言发展至今,对main函数有多种不同的写法,下面就来探究一下各种不同的写法。注:测试环境为Ubuntu 17.10,GCC版本为7.2.0。

NO.1main(){}

例:#include

main(){

printf("Hello World

");

}

NO.2void main(){}

例:#include

void main(){

printf("Hello World

");

}

NO.3int main(){}

例:#include

int main(){

printf("Hello World

");

return 0;

}

NO.4int main(void){}

例:#include

int main(void){

printf("Hello World

");

return 0;

}

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

例:#include

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

printf("Hello World

");

return 0;

}

NO.6int main(int argc,char **argv){}

例:#include

int main(int argc,char **argv){

printf("Hello World

");

return 0;

}

从上面的测试来看,写法1在C90标准下可以正常编译,而在C99和C11标准下会抛出一个警告(不写返回值,默认的返回值为int,也就相当于写法1和写法3等价)。写法2-6在C90、C99、C11标准下均能正常编译。在这么多写法中,到底哪一些才是main函数的标准写法?于是查阅了C标准文档对main函数的规范写法,见下图:

从标准文档中可以看出,写法4、5、6才是main函数的规范写法。写法5与写法6是等价的。那为什么又会有写法1、2、3呢?那是因为从1972年C语言被设计出来到C90标准发布这段时间,对C语言不同的实现就导致了对main函数的差异性。强烈不推荐写法2,因为main函数是被操作系统调用的,操作系统会根据main函数的返回值来判断程序的正确执行与否,如果返回void,那代表的是什么状态呢?而且一些编译器支持这种写法,一些编译器不支持,所有的标准并未认可这种写法。对于写法1和写法3还勉强能够接受,不过也不建议这样写,最好还是按照标准写法来写。为什么要按照标准写法来写?那是因为为了让C程序具有更好的移植性。写法5与写法6是等价的,第一个参数代表main函数参数的个数,第二个参数用指针分别指向这些参数。argv[0]代表程序名,argv[1]到argv[argc-1]代表程序参数。下面再看看main函数的返回值问题,见下图

从图中可以看出,如果main函数的返回值是int类型的兼容类型,从main函数返回后的值与exit一起相当于执行了exit xxx。xxx代表从main函数返回后的值。如果忘记写了return语句,当执行到main函数体的右大括号},会返回默认值0。返回0代表程序执行成功,程序退出。如果main函数的返回类型不是int类型的兼容类型,程序返回给操作系统的状态将会不明确。

C标准文档下载地址:

传送门:http://download.csdn.net/download/u012219371/10184521

C标准简介:

传送门:http://blog.csdn.net/u012219371/article/details/78951972

相关推荐:c语言教程视频

标准c语言程序的语句都以什么结尾,c程序的执行是从什么开始到什么结束?相关推荐

  1. 程序员永远都不会出轨? 和程序员谈恋爱的真实感受

    编辑 | Alice 专栏 | 九章算法 不管你是刚刚开始与程序员恋爱还是已经与程序员交往了很久,这篇文章都值得你看一看,我百分之百确信你会阅读得很愉快. Enjoy~ 01 程序员永远都不会出轨 因 ...

  2. 普通的程序员每天都做什么,资深程序员带你了解行业内幕

    和名企那种高级程序员当然不一样,人家的工作可能是研究架构,专研用于提高性能的算法,实现人工智能论文里的功能,自然语言的理解,图像识别,高并发问题解决等等,这些高大上的功能. 呵呵,开玩笑了.其实名企里 ...

  3. Go语言基础-if语句

    原文链接: https://www.fearlazy.com/index.php/post/288.html 在目前接触的几种语言中条件语句都是必不可少的.很难想象没有条件语句要怎么写程序. 1.if ...

  4. 【C语言】分支语句与循环语句

    前言 本篇写的内容是C语言中的分支和循环语句. 分支语句ifelse语句.switch语句 循环语句while循环.for循环.do while循环 语句 C语言中由一个分号:隔开的就是一条语句.比如 ...

  5. 程序员转行都去干嘛了?产品经理很正常,这位卖烧饼的也太强了

    程序员转行都去干嘛了?以下这些切实又不切实的选择仅供参考 1.转往临近岗位,比如你讨厌的产品经理 程序猿和产品经理可谓是最像夫妻的两个职位,相爱相杀,知根知底. 程序员转产品经理有很大优势,因为了解产 ...

  6. 微信小程序好物圈全新改版,小程序电商创业者新机遇

    我们都知道,微信最近的一系列改版更新都是为了小程序这个新物种,当移动互联网人口红利逐渐减少甚至消失的时候,唯有从现有的功能条件下,开发出新的功能来拉动软件的活跃度,产品的更新迭代也是频繁发生,毕竟相对 ...

  7. c语言注释语句执行吗,C语言学习笔记之C语言概念解析(附资料分享)每一个语句都必须以分号结尾但预处理命令函数头和花括号“}”之后不能加分号...

    [[怪兽爱C语言]C语言学习笔记之C语言概念解析(附资料分享)]https://toutiao.com/group/6582429294901854728/?iid=15906422033&a ...

  8. c语言程序表达语句,《C语言程序设计》讲稿.doc

    <C语言程序设计>讲稿 <C语言程序设计>讲稿 目 录 第一讲 C语言概述1 第二讲 C语言程序介绍2 第三讲 算法8 第四讲 数据类型(1)20 第五讲 数据类型(2)21 ...

  9. c语言分隔符的作用,句子分割代码(C语言程序的语句分隔符是)

    C#代码中sql 语句段分割 sql server 查询分析器能分析到底当前语句是否结束 可能中间有多个回车. 涉及程序设计 语义的解释.这个很麻烦, 我记得 看过一篇解析语法的程序设计,很麻烦.还是 ...

最新文章

  1. vc 只有顶级窗口可以弹出窗口_如何在Mac上允许弹出窗口
  2. 计算机内存与内置类型,笔记本内存种类有哪些 笔记本常见内存类型介绍
  3. CentOS7 搭建Pulsar 消息队列环境,CentOS(Linux)部署Pulsar,亲测成功,以及Python操作Pulsar实例驱动
  4. Clumsy网络模拟工具
  5. 云计算实战系列一(走进linux)
  6. oracle 获取执行时间间隔,Oracle获取某一段时间间隔之后的日期
  7. 获取 python import模块的路径
  8. MySQL-快速入门(4)MySQL函数
  9. ORACLE RAC 12C(12.1.0.2)数据库软件安装步骤
  10. .NET报表控件ActiveReports实战应用——入门指南
  11. CAXA图文档2007服务器端,CAXA图文档客户端系统管理员操作.doc
  12. Matplotlab可视化学习笔记(二):如何绘制柱状图
  13. 熊出没之伐木机器人_盘点熊出没中李老板的五大伐木工,光头强无人能代替
  14. iOS 开发中的日期格式
  15. 移动硬盘使用mysql_移动硬盘如何正确使用才好?
  16. 数据可视化之智能bi实现生态绿地数据可视化分析
  17. 在家里免费下载知网内的论文方法
  18. 电脑卡在系统logo处
  19. kingcms php 下载,KingCMS企业版(PHP) v6.1.1641(Sp2)
  20. 解析 Java 类和对象的初始化过程

热门文章

  1. Redux 替代品 Zustand
  2. C#获取目录下所有文件的列表——最白话,手把手教你做系列。
  3. Advanced PHP 高级PHP教程 Lynda课程中文字幕
  4. YTU软件工程白盒测试
  5. int函数python_int()函数
  6. 协同数据交换平台详细设计方案(word)
  7. 激活函数以0为中心的好处
  8. 转:HDFS研究----.Trash文件
  9. MFC TabControl插件 子对话框调用主对话框功能函数和变量
  10. (python)BMI计算