c++primer plus 第二章

程序执行始于main函数,全局域内main函数唯一且不可重载。main函数调用前,系统进行初始化工作,如栈、堆、标准流等,并传递参数。结束后,关闭资源并退出。main函数可接受参数,如int argc, char* argv[],用于接收命令行参数。预处理器在编译前处理指令,完成特定任务。
摘要由CSDN通过智能技术生成

main函数

程序执行总是从main函数开始,如果有有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序

1. main唯一

对于程序的全局域中,main()函数只能有一个,且这个函数不能重载,因为main()函数作为函数的入口,如果有多个,系统就找不到入口了。
对于 在类中或命名空间中,我们也是可以定义main()函数的,只是这个main()函数与全局的main()函数不是同一个函数,它们只是名字相同,功能完全不同。只是我们一般为了区分,在局部域中,定义函数时不会写成main()

2. main函数调用

汇编代码中:

__start:

     :
     init stack;
     init heap;
     open stdin;
     open stdout;
     open stderr;
     :
     push argv;
     push argc;
     call _main; (调用 main)
     :
     destory heap;
     close stdin;
     close stdout;
     close stderr;
     :

     call __exit;

在调用main函数之前,会先进行初始化栈,堆,打开标准输入,输出,错误流,把参数压栈。还有一些全局变量、对象和静态变量、对象的空间分配和赋初值。

在调用main函数之后,要销毁堆内存,关闭标准输入,输出,错误流。

这些都是编译器帮助我们自动生成的,帮助我们启动main函数

3. main()函数参数

C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例:

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

argc 为参数个数
argv[] 传人的参数数组

a.exe a b

如上运行:
则main函数里 argv[0]=a.exe, argv[1] = a, argv[2] = b, argc = 3

预处理器

预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值