main()函数执行完后,还会调用执行其他的语句吗?


       通常认为C语言的起始函数是main()函数,实质上一个程序的启动函数并不一定是main()函数,这个可以采用链接器来设置,但是gcc中


默认main()就是C语言的入口函数,在main函数启动之前,内核会调用一个特殊的启动例程,这个启动例程从内核中取得命令行参数值和环境变量


值,为调用main()函数做好准备。


      因此对应程序而言main()函数并不是起始,但是对应C 语言而言,main()函数就是入口地址。


      按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用,通常这32个函数被称为终止处理程序,并调用atexit()函数来


登记这些函数。 (函数的调用顺序与注册的顺序是相反的,通过下面的实例可以看出来)     


举例


代码如下:


#include<stdio.h>
#include<stdlib.h>
void fun1(void)
{
printf("fun1\n");
}


void fun2(void)
{
printf("fun2\n");
}


void fun3(void)
{
printf("fun3\n");
}
int main()
{
atexit(fun1);
atexit(fun2);
atexit(fun3);

printf("main exit\n");

return 0;

本人亲测了一波,果不其然:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值