为什么C语言程序中必须要有一个且只能有一个main()函数

这是因为:有些初始化代码,会在main()函数启动前运行,这个启动代码会调用我们编写的main()函数,所以其它函数可以任意编写,main()的格式是固定的,是我们自己编写的代码,我们自己的程序启动的地方,通常也是我们自己的程序结束的地方。

main()程序或者整个程序(若干人编写的)运行的起点,C这整个系统除了自己编写的部分外,还有一部分,是编译系统定义的。自己编写的部分,从main()函数启动运行一般来说,也在main()函数里结束。这种情况是正常的,而且没有错误的,程序运行情况。通常我们并不是从头编写整个程序(比如汇编那样,把一切掌握在自己手中)

所以,系统为了简化我们编程,对一些硬件相关的,操作系统相关的,还有一些是编译器相关的代码,写在库里,其中有些初始化代码,会在main()函数启动前运行,这个启动代码会调用我们编写的main()函数,所以其它函数可以任意编写,main()的格式是固定的,是我们自己编写的代码,我们自己的程序启动的地方,通常也是我们自己的程序结束的地方。

计算机其实在同一瞬间只能执行同时执行一条命令,看起来程序有那么多功能、那么多代码,其实计算机cpu执行起来是按优先级顺序执行的,并不能同时执行两条或者多条命令,所以给计算机写的程序必须要有一定的规则和顺序,main函数是c语言程序的入口地址,有且只有一个,如果多个main函数的程序存在,计算机执行之后要么是后面的main函数的地址将前面的覆盖掉,到最后只行政一个入口地址,要么若多入口程序真的存在..计算机是不会自己做出选择的,,所以..会死机吧..或者随机执行个入口了…

这样的话写程序就违反了自己写程序的初衷。

延伸阅读:

什么是main()函数?

main函数,又称主函数,是程序执行的起点,main是相对来说的,如同音学理论之主调于泛音,泛音即程序中的除main之外的其他函数,迎合人们的思考方式而生成的而非必定的模式。有主有次,执行起来条清缕析,既可将程序模块化又实现了一个闭合的整体。

程序执行总是从main函数开始,如果有有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序。在执行程序时,由系统调用main函数。main 函数是在程序启动中完成对具有静态存储期的非局部对象的初始化之后被调用的。它是程序在有宿主 (hosted)环境(亦即有操作系统)中所指定的入口点。自立程序(启动加载器,操作系统内核,等等)的入口点则是由实现定义的。

开发者生产力工具大全:

从人工到自动化,从重复到创新,技术演进的历程中,都伴随着开发者工具类产品的发展,所以这里整理近几年口碑良好,使用广泛的22款程序员生产力工具。

1.研发项目管理与协作:PingCode

优点:让工作推进、进度/问题追踪、团队协作变得更简单,2021年研发项目管理榜单TOP1(36Kr)。

简介:覆盖研发全生命周期,广泛用于需求、版本、项目(敏捷/kanban/瀑布)、测试、缺陷、文档、效能等环节管理与协作。并且集成github、gitlab、jinkens等主流工具,支持私有部署、在线等多种部署使用方式。

教程/官网

2.任务管理/甘特图制作工具:Worktile

优点:功能成熟、性价比高、国内市场占有率最高的团队任务工具;

简介:在功能上Worktile 是一个工具集合,它具备OKR目标管理、项目管理、项目集管理、项目计划、项目风险、项目成本管理、企业网盘、审批、简报等能力。并且具备强大的自定义能力,能够配置出符合各种项目团队的流程、表单、字段、数据报表,以及具备丰富的模板市场。

官网/教程

3.分布式版本控制系统:Git

优点:分布式开发、速度快、灵活

简介:Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

教程/官网

4.数据库管理工具:Navicat

优点:高效、安全,最好用的数据库管理工具。

简介:“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库,它与阿里云、腾讯云、华为云、Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud 和 MongoDB Atlas等云数据库兼容。

官网/教程

其余工具可通过《神级程序员都用什么工具?程序员生产力工具大全 》查看,以上均整理自该文章。

文章标题:为什么C语言程序中必须要有一个且只能有一个main()函数,发布者:小编,转载请注明出处:https://worktile.com/kb/p/40682

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年2月23日 上午1:43
下一篇 2023年2月23日 上午1:44

相关推荐

  • 拟态计算机与传统计算机有什么具体区别

    区别是:拟态计算机是按照拟态计算原理构造的计算机。经典通用计算机采用“执行结构固定不变、靠软件编程实现计算”。拟态计算机通过基于认知的元结构的拟态变换生成应用目标所需的物理解算结构集合,“依靠动态变结构、软硬件结合实现基于效能的计算”。

    2023年2月15日
    2600
  • 大型项目中型项目小型项目如何划分

    大型项目中型项目小型项目的划分:成本超过 5000 个工时的项目称为大型项目;花费 251-5000 个工时的项目称为中型项目;通常花费 1-250 个工时的项目称为小项目。 一、大型项目中型项目小型项目的划分 二、常见的项目类型 三、基于优先级的项目  该项目分为两部分,优先确定较重要和不太重要的…

    2023年2月23日
    33200
  • 网站用什么数据库比较多,都各有什么优缺点

    常用的数据库有:一、MySQL;二、PostgreSQ;L三、MongoDB;四、Redis。MySQL是一个非常流行的关系型数据库管理系统,已经成为大多数网站使用的首选数据库之一。MySQL具有开源免费、易于使用和高性能的优点。同时也有扩展性不好和安全性风险的缺点。 一、MySQL MySQL是一…

    2023年5月30日
    600
  • vite和webpack的区别

    Vite和Webpack的区别主要在于:1、原理不同;2、速度不同;3、插件兼容性不同;总体来看,Vite的优势在于快速的热更新和按需编译,而Webpack则在于其插件生态丰富,更适合大型项目。 一、原理不同 Webpack是一种模块打包工具,将所有模块进行静态分析,形成依赖树,然后一次性编译生成文…

    2023年6月1日
    2700
  • 设定产品的功能优先级时,有哪些指导性原则与依据

    设定产品的功能优先级时可用的指导性原则与依据:1、卡诺模型;2、RICE方法;3、工作量和影响;4、MoSCoW方法;5、WSJF优先级;6、艾森豪威尔矩阵。其中,卡诺模型将需求分为必备型、期望型、兴奋型、无差别、反向五种。

    2023年1月2日
    4900
  • 资料共享用什么软件

    资料共享可以用的软件有:一、Dropbox;二、Google Drive;三、OneDrive;四、TeamViewer;五、Slack。Dropbox是一种云存储服务,它可以让用户在不同设备、平台和地点之间共享各种类型的数字化信息。用户可以将文件上传到Dropbox服务器,随时随地访问这些文件。 …

    2023年4月30日
    1700
  • 产品全生命周期管理包括什么

    产品全生命周期管理所包括的内容分为几个方面:1、市场营销学定义;2、随着PLM软件的兴起;3、基于产品管理概念的基础。市场营销学定义的产品生命周期为:导入、成长、成熟、衰退。这个已经不能概括产品生命周期的全过程。 一、产品全生命周期管理包括什么 1、市场营销学定义的产品生命周期为:导入、成长、成熟、…

    2023年4月18日
    8100
  • 类似 Jira 的轻量化项目管理软件有哪些

    类似 Jira 的轻量化项目管理软件有:1.PingCode;2.Worktile;3.Redmine;4.Trello;5.Moday;6.Teambition;7.Clickup;8.Tapd;9.思码逸;10.云效平台。企业寻找的 Jira 替代工具的时候并不是要求100%取代Jira,而是有…

    2023年2月8日
    8700
  • 什么是ENS

    ENS全称为Ethereum Name Service,是以太坊网络上的一个域名服务。类似于互联网上的DNS,ENS也提供了一种将易于记忆的名称映射到以太坊的方式。通过ENS,用户可以使用类似于“myname.eth”这样的名称来代替复杂的以太坊。 ENS全称为Ethereum Name Servi…

    2023年5月28日
    400
  • 在 java 里堆和栈的区别是什么

    堆和栈的区别有:1、存储内容不同;2、管理方式上不同;3、空间大小不同;4、能否产生碎片不同;5、生长方向不同;6、分配方式不同;7、分配效率不同。在函数调用时,栈中存放的是函数中各个参数,堆一般是在堆的头部用一个字节存放堆的大小。

    2023年2月12日
    2600

发表回复

登录后才能评论
联系我们
站长微信
站长微信
分享本页
返回顶部