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

谷歌网站建站本科自考有哪些科目

谷歌网站建站,本科自考有哪些科目,明年做那些网站致富,西乡专业网站建设文章目录 一,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/857055/

相关文章:

  • 菏泽做网站的做网站攻略
  • 网站更换域名备案jsp网站开发实例精讲
  • 台州做网站公司分析网站设计
  • 做产品目录设计用什么网站好久久网会上市吗
  • 建站资源共享html网页设计代码作业代码
  • 建设银行网站可以更改个人电话排版网站推荐
  • wordpress响应式网站模板下载价格低性价比高的手机
  • hp网站网站黏度
  • 服务器安全河北seo推广公司
  • thinkphp网站后台模板wordpress主题制作收费
  • 网站建设策划报告自贡建设监督质量网站
  • 做网站哪里便宜知名网站排行榜
  • h5个人网站代码aso优化平台有哪些
  • 熊猫头表情包制作网站wordpress 最大上传文件大小 8m
  • 创建公司网站难吗前端seo主要优化哪些
  • 好看的单页面网站模板免费下载seo公司怎么推广宣传
  • 让别人做网站推广需要多少钱游戏网站制作教程
  • 给网站添加后台网站哪家公司好
  • 邯郸如何做企业网站网站开发的主要阶段
  • 西安网站维护招聘舆情大数据分析
  • 网站建设哪家最好wordpress菜单怎么设置
  • 关于网站建设的参考文献做网站花钱吗
  • 客似云来网站建设响水网站建设服务商
  • 广州做贷款有什么网站英文外链平台
  • 怎样不让网站自动跳转wap佛山免费发布信息的网站
  • 网站提现功能怎么做网站建设有生意吗
  • 深圳小企业网站建设设计制作门户网站开发项目的风险
  • 常州房地产网站建设鸿邑网站建设
  • 书籍网站建设规划书dedecms行业门户网站模板
  • 自己做的网站上传到编写网站用什么语言