当前位置: 首页 > news >正文

网站开发发展现状在中国怎么做国外网站

网站开发发展现状,在中国怎么做国外网站,学校网站的建设方案,wordpress后台不见文章目录 一,main函数二,exit函数1,exit函数2,atexit()函数2.1 atexit函数的简介2.2 atexit注册的函数一定会被调用吗2.2.1 正常退出测试2.2.2 异常退出测试 一,main函数 一个C程序至少包含一个函数,这个函…

文章目录

  • 一,main函数
  • 二,exit函数
    • 1,exit函数
    • 2,atexit()函数
      • 2.1 atexit函数的简介
      • 2.2 atexit注册的函数一定会被调用吗
        • 2.2.1 正常退出测试
        • 2.2.2 异常退出测试

一,main函数

在这里插入图片描述

一个C程序至少包含一个函数,这个函数就是main()函数,它是程序的入口点。

main()负责调用其他函数,完成程序的主要任务。

#include <stdio.h>int main() {printf("Hello, World!\n");return 0; // 程序正常结束
}

main()函数的声明和普通函数并无区别,也包含函数头和函数体,函数头包含返回值类型、函数名称、参数列表,函数体中包含return语句。

正常情况下,如果main()里面省略return语句,编译器不会警告或者报错,相当于编译器会自动加上return语句,可以认为main()的默认返回值为0。所以,也可以写成下面这样。

#include <stdio.h>int main() {printf("Hello, World!\n");// 省略return 0; 程序正常结束
}

二,exit函数

1,exit函数

exit()

exit()函数的作用是终止整个程序,原型定义在头文件stdlib.h里面,引入头文件后,我们可以直接在其他函数中使用。

exit()可以起到return的作用,向函数外部返回一个值,返回值是传递给exit()的参数。

exit()的参数通常是两个常量:

  • EXIT_SUCCESS(相当于 0)表示程序运行成功
  • EXIT_FAILURE(相当于 1)表示程序异常中止。

这两个常量的定义包含在stdlib.h里面。

// 程序运行成功
// 等同于 exit(0);
exit(EXIT_SUCCESS);// 程序异常中止
// 等同于 exit(1);
exit(EXIT_FAILURE);

在main()函数里面,exit()等同于使用return语句。

#include <stdio.h>int main() {printf("Hello, World!\n");// 等同于return 0;exit(EXIT_SUCCESS);
}

其他函数使用exit(),就是终止整个程序的运行,没有其他作用。

#include <stdio.h>
#include <stdlib.h>int plus1(int num){exit(0);
}int main()
{printf("Hello World");int num = plus1(0);printf("num=%d",num);
}

如上代码,main函数中调用plus1()plus1中调用了exit函数,执行exit函数后,整个程序就结束,不会再执行main函数的最后一行代码。

也即是说,我们在普通函数中调用exit函数时传递参数,是没有什么意义的。

2,atexit()函数

2.1 atexit函数的简介

C 语言还有一个atexit()函数,用来告知编译器在exit()执行之前,执行一个指定的函数,这个程序可以称之为终止处理程序,通常用来执行程序结束前的资源回收工作,比如释放内存、释放数据库连接等等,或者程序异常退出前打印异常信息。

该函数的原型定义在头文件stdlib.h。

int atexit(void (*func)(void));

注意,atexit()的参数是一个函数指针,且这个指针指向的函数必须满足如下两个条件:

  • 不接受任何参数。
  • 不能有返回值。
void releaseSomething(void) {printf("releaseMemory\n");printf("releaseDBLink\n");
}
atexit(releaseSomething);
exit(EXIT_SUCCESS);

上面示例中,exit()执行时,会先调用atexit()函数注册的releaseSomething()函数,之后终止程序。

可以通过atexit注册多个终止处理程序,同一个函数若注册多次,那它也会被调用多次。

POSIX.1-2001 规定,至少可以注册 32 个终止处理程序,若想查看实际可以注册多少个终止处理程序,可以通过调用 sysconf()函数获得。

2.2 atexit注册的函数一定会被调用吗

如果程序异常退出,atexit注册的函数不一定会被调用。

以下5种程序终止方式会调用atexit注册的函数。

  • ① 从main返回

  • ② 调用exit函数

  • ③调用 _exit 或 _Exit

  • ④最后一个线程从其启动例程返回

  • ⑤最后一个线程调用pthread_exit

下面三种异常终止的情况不会调用atexit注册的函数:

  • ① 调用 abort
  • ② 接到一个信号并终止
  • ③ 最后一个线程对取消请求做出响应
2.2.1 正常退出测试

测试代码:

#include <stdio.h>
#include <stdlib.h>void fn1(void);
int main(void) {printf("main begain!\n");atexit(fn1);printf("main exit!\n");return 0;
}void fn1() {printf("fn1 exit!\n");
}

结果显示,程序退出前执行了atexit注册的函数。
在这里插入图片描述

2.2.2 异常退出测试

测试代码:

#include <stdio.h>
#include <stdlib.h>void fn1(void);
int main(void) {printf("main begain!\n");atexit(fn1);// 发出中断信号abort();printf("main exit!\n");return 0;
}void fn1() {printf("fn1 exit!\n");
}

结果显示,程序终止前没有执行atexit注册的函数。

在这里插入图片描述

http://www.yayakq.cn/news/93230/

相关文章:

  • 哪些网站做的海报比较高大上检测设备技术支持东莞网站建设
  • 有道翻译网站 做翻译wordpress怎么改模版
  • 淘宝网站建设合同创建公司网站需要准备哪些素材
  • 做养生网站需要资质吗企业网站开发一般多少钱
  • 网站建设怎么建设企业网站排行
  • 织梦可以做相亲网站网站规划可以分成哪几步
  • 济南网站建设推广php网站开发是什么意思
  • 网站上传视频怎么做简单的公司网站系统
  • 建设注册管理中心网站如何建立一个网站的数据库文件
  • 做电脑网站用什么软件有哪些方面众筹网站怎么做
  • 网站怎么添加百度商桥花都网站建设
  • 专业网站优化软件设计师导航网站
  • 外贸常用网站建设眼镜网站风格
  • 网站建设 检查 通报绍兴seo排名
  • 宠物网站建设费用北京网站建设找德冿朴
  • c 如何拖控件做网站信息流广告图片
  • 朝阳公司做网站seo站点
  • 综合性电子商务网站有哪些百度托管运营哪家好
  • win10可以自己做网站标准百度网站建设
  • 邯郸wap网站建设报价如何做情趣网站
  • 大型做网站的公司有哪些国外域名免费注册
  • wordpress多站用户用照片做的ppt模板下载网站好
  • 网站在网站网站在哪里找到的阿里云域名注册及备案
  • 营销网站建设收费一句话宣传自己的产品
  • 成都网站注册如何在百度推广
  • 两学一做网站是多少钱企业网络管理 网站开发与运营
  • 网站搭建网站制作WordPress文章按钮
  • 建设银行企业网站无法打印回单邢台做网站的价格究竟多少钱?
  • dede修改网站密码成都市住房与城乡建设厅网站
  • 合肥制作网站哪家好黄山网站建设方案