c语言中总是从main函数开始,C语言总是从main函数开始执行吗

C语言程序的执行并不总是从main函数开始,而是从链接器确定的入口点开始,通常为_CRTStartup或类似函数。main函数的使用是开发工具的约定,可以改变入口点,但需要处理初始化工作。在标准C中,程序的入口点默认为main,但可以通过链接器设置为其他函数。在程序执行过程中,初始化和清理工作由运行时库处理,main函数执行前后有特定的流程。
摘要由CSDN通过智能技术生成

//--------------------------------------------------------

本文目录结构

|-提出问题

|-解决问题

|-推荐文章

|-作业

//--------------------------------------------------------

一、提出问题

①C程序main函数是必要的吗?

②程序从main函数开始吗?

③在main函数结束吗?

二、解决问题

main它不是必须要有的函数。它不是程序的开始点,也不是程序结束点。

分析:

main只是开发工具所规定的一个特殊函数名称而已,程序的入口点记录在可执行文件中的一个数据,该数据标明程序从哪个位置开始执行,这个数据是连接程序的时候由link.exe确定的,可以把程序的入口点 指定为任意函数,甚至可以自己编辑可执行文件修改程序的入口点。在默认情况下,link.exe会连接开发工具中带有的一个obj文件,并设置该obj中 的固定函数为程序的入口点,这个函数执行后会做一些初始化的事情,然后调用main函数。在执行连接的时候,如果不连接这个obj,程序中就可以没有 main函数。

程序最终生成的exe执行时,开始执行的是mainCRTStartup(或 wmainCRTStartup......以及其他)函数之一,而不是我们程序所写的main或WinMain等。连接器为什么要这样做?因为我们写的程序必须要使用到各种各样的运行时库函数才能正常工作,所有在执行我们自己写程序之前必须要先准备好所需要的一切库,之所以要连接它们是因为他们肩负着很重要的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值