C語言return, exit, abort的區(qū)別
一般情況下,在C語言中退出一個(gè)程序用return
,如果在main
函數(shù)中,return
在清理局部對象之后,會調(diào)用exit
函數(shù)。
和return
相比,exit
并不會銷毀局部對象,而是會銷毀所有靜態(tài)與全局對象、清空緩沖區(qū),關(guān)閉IO通道。終止前則會調(diào)用atexit()
所定義的函數(shù)。
atexit也在stdlib.h中,其聲明式為
int atexit(void (*func)(void))
當(dāng)程序中止時(shí),就會調(diào)用函數(shù)指針func
。
//atexit.c #include <stdio.h> #include <stdlib.h> void funcA (){ ? ?printf("call from atexit\n"); } int main (){ ? ?atexit(funcA); ? //將funcA注冊為中止函數(shù) ? ?printf("exiting...\n"); ? ?return 0; }
測試結(jié)果如下:
>gcc atexit.c
>a.exe
exiting...
call from atexit
如果希望什么都不做就退出程序,可以使用abort()
,將abort()
;插入到return 0
前面,則其輸出結(jié)果如下,并不會調(diào)用funcA
。
>a.exe
exiting...
到此這篇關(guān)于C語言return
, exit
, abort
的區(qū)別的文章就介紹到這了,更多相關(guān)C語言return, exit, abort區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++實(shí)現(xiàn)模擬shell命令行(代碼解析)
這篇文章主要介紹了C++實(shí)現(xiàn)模擬shell命令行,本文通過實(shí)例代碼進(jìn)行命令行解析,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12C語言 strcpy和memcpy區(qū)別詳細(xì)介紹
這篇文章主要介紹了C語言 strcpy和memcpy區(qū)別詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解
今天小編就為大家分享一篇關(guān)于C++中rapidjson將嵌套map轉(zhuǎn)為嵌套json的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-04-04講解C++編程中Address-of運(yùn)算符&的作用及用法
這篇文章主要介紹了C++編程中Address-of運(yùn)算符&的作用及用法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-01-01