c语言中return,和exit的区别

下面是自己的总结,有时候觉得还是自己基础不够,有句话说的好弯路是最好的捷径,自要自己多去尝试,程序这个东西当你哪儿不懂得时候就去尝试,当你不明白这个代码的执行流程时就添加打印,这样你就能够清晰看到函数流程和一些函数的用法。

exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。

exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数 tmpfile()创建的临时文件。exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而return是返回函数值并退出函数

return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
exit函数是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息。
和机器和操作系统有关一般是   0 为正常退出  非0 为非正常退出
void exit(int status);
atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。atexit()的函数原型是:int atexit (void (*)(void));在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用。

运行结果如下:

总结:return 是堆栈返回,当你子函数中使用return 就是从这个子函数返回。

时间: 2024-10-26 02:39:30

c语言中return,和exit的区别的相关文章

C语言中char*和char[]用法区别分析_C 语言

本文实例分析了C语言中char* 和 char []的区别.分享给大家供大家参考之用.具体分析如下: 一般来说,很多人会觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正. 本质上来说,char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以: 当char *s = "hello";后,不能使用s[0]='a':语句进行赋值.这是将提示内存不能为"written". 当用char s[]=&q

c语言中getch,getche,getchar的区别_C 语言

getchar 是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说 ,如果stdin有数据的话不用输入就可以直接读取了.而getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符. getch() 实际是一个输入命令,作用是从键盘接收一个字符,而且并不把这个字符显示出来,就是说,你按了一个键后它并不在屏幕上显示你按的什么,而继续运行后面的代码,所以我们在C++中可以用它来实现"按任意键继续"的效果,即程序中遇到getch();这行语

Go语言中new()和 make()的区别详解_Golang

概述 Go 语言中的 new 和 make 一直是新手比较容易混淆的东西,咋一看很相似.不过解释两者之间的不同也非常容易. new 的主要特性 首先 new 是内建函数,你可以从 http://golang.org/pkg/builtin/ 这儿看到它,它的定义也很简单: 复制代码 代码如下: func new(Type) *Type 官方文档对于它的描述是: 复制代码 代码如下: 内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针 根

编程-求助C语言中的return问题

问题描述 求助C语言中的return问题 麻烦大家解释一下return在不同返回值下的含义是什么?比如return 0: return -1: return 1: return :(哈有这个测试用例:int ret = 0,if(传过来的地址为NULL) return ret).希望大家能帮我详细地讲一下return的具体含义及其用法,谢谢大家! 解决方案 return的使用方法有两种: 1.return -- 例如return 1; 例如return res[1]; 例如return "hel

如何解决:输入输出-c语言中' ',与' '的区别?

问题描述 c语言中' n',与' '的区别? 今天没事写了段代码. #include main() { int c; while(c=getchar())!='n' putchar(c); } 这里只能输入输出一次,就退出循环了. 而我这样写 将while(c=getchar())!='n'改为while(c=getchar())!='' 这样就可以多次循环输入输出了而我又将上面的改为while(c=getchar())!=EOF 则不能输出了. 请问这几个是为什么? 谢谢! 解决方案 首位是n

C语言中char* 和 char []区别

原文:C语言中char* 和 char []区别 想要把丢掉的东西捡起来,还是很辛苦啊,今天我就发现,我连char* 和 char []的区别都不知道. 很多人觉得这两个定义效果一样,其实差别很大.以下是个人的一些看法,有不正确的地方望指正. 本质上来说,char *s定义了一个char型的指针,它只知道所指向的内存单元,并不知道这个内存单元有多大,所以:当char *s = "hello";后,不能使用s[0]='a':语句进行赋值.这是将提示内存不能为"written&q

详解C++中的const关键字及与C语言中const的区别_C 语言

const对象默认为文件的局部变量,与其他变量不同,除非特别说明,在全局作用域的const变量时定义该对象的文件局部变量.此变量只存在于那个文件中中,不能别其他文件访问.要是const变量能在其他文件中访问,必须显示的指定extern(c中也是)   当你只在定义该const常量的文件中使用该常量时,c++不给你的const常量分配空间--这也是c++的一种优化措施,没有必要浪费内存空间来存储一个常量,此时const int c = 0:相当于#define c 0:    当在当前文件之外使用

C语言中printf(),sprintf(),scanf(),sscanf()的用法和区别

以下是对C语言中printf(),sprintf(),scanf(),sscanf()的用法以及区别进行了详细的分析介绍,需要的朋友可以参考下   printf语法: #include <stdio.h> int printf( const char *format, ... ); printf()函数根据format(格式)给出的格式打印输出到STDOUT(标准输出)和其它参数中.返回值是输出的字符数量.sprintf语法: #include <stdio.h> int spri

java语言中for循环和while循环有什么区别?

问题描述 java语言中for循环和while循环有什么区别? java语言中for循环和while循环有什么区别?一般应聘的公司用哪个比较多?是不是不会while循环也没事. 解决方案 是的,两个没什么区别.就好比一个肾也能活.虽然一般应聘的公司的程序员都有两个肾,但是如果你卖掉一个也没事. 解决方案二: 跳出while/for循环 for(xx;xx;xx){ ? ?? break ;//跳出for循环 ? } ? ? while(){ ? ??? break;跳出while循环 ? } =