c语言exit和return有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言exit和return有啥区别相关的知识,希望对你有一定的参考价值。

exit括号里的内容和return后面的内容表示的意思是一样吗?

        在main函数里面使用return语句表示程序退出,后面跟着的数字返回给操作系统或者调试器,这个数字用来表示程序退出状态:EXIT_SUCCESS(正常终止)、EXIT_FAILURE(非正常退出)。你如果用Visual Studio来调试程序就可以在输出窗口看到main函数返回的值。

        exit可以在其他地方(不只是main函数)用来终止程序,其中的参数和main函数的return返回值一样,与程序正常退出(在main函数的使用return语句或者main函数执行完毕)不同的是:调用exit函数来退出,任何未析构的局部非静态变对象不会被析构。



    

    

参考技术A 不一样。本质就不一样
exit()是一个函数,而return是C语言的一个关键字。
return 可以return很多种类型的值,比如 char,int ,double 等类型;
而exit(),参数是有限的。0或者非0。应该是int型
参考技术B main 函数中的 return 0; 跟 exit(0); 在效果上是一样的

exit() 与 return() 的区别

exit()与 return() 的区别为:

  1. return返回函数值,是关键字;  exit 是一个函数。

  2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。

  3. return是函数的退出(返回);exit是进程的退出。

  4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。

  5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是 0 为正常退出,非0 为非正常退出。

  6. 非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。

 

此外,exit()和 return()的用法如下:

exit(0):表示正常运行程序并退出程序;

exit(1):表示非正常运行导致退出程序;

return(func()):返回函数 func() 的值,若在主函数中,则会退出函数并返回一值。

这两个函数都带一个参数表示终止状态,这跟我们平时写的return效果是一样的,如果不返回一个终止状态,那表示这个进程的终止状态就是未定义的。

 

进程终止有5种方法:

1正常终止

(1)从main函数返回

(2)调用exit

(3)调用_exit

2异常终止

(1)调用abort

(2)由一个信号来终止 

 

exit和_exit就是用来正常终止一个进程的,主要区别是_exit会立刻进入内核,而exit先执行一些清除工作(包括执行各种终止处理程序,关闭所有标准 I/O 等,一旦关闭了 IO,例如 Printf 等函数就不会输出任何东西了),然后才进入内核。这两个函数会对父子进程有一定的影响,当用vfork创建子进程时,子进程会先在父进程的地址空间运行(这跟fork不一样),如果子进程调用了exit就会把父进程的IO给关掉。

以上是关于c语言exit和return有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

c语言exit和return的区别

退出和返回有啥区别? [复制]

c语言中NULL和EOF有啥区别

C语言,图中这个函数OK的值为啥是1,return 1和0有啥区别?

exit() 与 return() 的区别

C语言异常处理和exit()怎样使用?