1、首先,想想C/C++在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函数之后,要销毁堆内存,关闭标准输入,输出,错误流。
这些都是编译器帮助我们自动生成的,帮助我们启动main函数。
2、main()函数及其参数
C++标准允许主函数main()有或没有参数列表。 您能在主函数main()中使用一个或更多的参数。 如下是一些惯例:
int main(int argc, char *argv[])
第一个参数argc,指明有多少个参数将被传递给主函数main(),真正的参数以字符串数组(即第2个参数argv[])的形式来传递。每一个字符串均有自己意思。在这句法上面, 记住, argc代表参数的数量, main()函数本身是在索引0为的第一参数。 所以, argc总是至少为1 。它的总数是从argv列阵的元素数目。 这意味着, argv[0]的值是至关重