C語言return, exit, abort的區別

一般情況下,在C語言中退出一個程序用return,如果在main函數中,return在清理局部對象之後,會調用exit函數。

return相比,exit並不會銷毀局部對象,而是會銷毀所有靜態與全局對象、清空緩沖區,關閉IO通道。終止前則會調用atexit()所定義的函數。

atexit也在stdlib.h中,其聲明式為

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

當程序中止時,就會調用函數指針func

//atexit.c
#include <stdio.h>
#include <stdlib.h>

void funcA (){
   printf("call from atexit\n");
}

int main (){
   atexit(funcA);   //將funcA註冊為中止函數
   printf("exiting...\n");
   return 0;
}

測試結果如下:

>gcc atexit.c
>a.exe
exiting…
call from atexit

如果希望什麼都不做就退出程序,可以使用abort(),將abort();插入到return 0前面,則其輸出結果如下,並不會調用funcA

>a.exe
exiting…

到此這篇關於C語言return, exit, abort的區別的文章就介紹到這瞭,更多相關C語言return, exit, abort區別內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: