日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言中return和exit的区别

發布時間:2023/11/29 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言中return和exit的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1,exit用于在程序運行的過程中隨時結束程序,exit的參數是返回給OS的。main函數結束時也會隱式地調用exit函數。exit函數運行時首先會執行由atexit()函數登記的函數,然后會做一些自身的清理工作,同時刷新所有輸出流、關閉所有打開的流并且關閉通過標準I/O函數tmpfile()創建的臨時文件。exit是結束一個進程,它將刪除進程使用的內存空間,同時把錯誤信息返回父進程,而return是返回函數值并退出函數
2,return是語言級別的,它表示了調用堆棧的返回;而exit是系統調用級別的,它表示了一個進程的結束。
3,exit函數是退出應用程序,并將應用程序的一個狀態返回給OS,這個狀態標識了應用程序的一些運行信息。
4,和機器和操作系統有關一般是 0 為正常退出 非0 為非正常退出
5,void exit(int status);
6,atexit()函數的參數是一個函數指針,函數指針指向一個沒有參數也沒有返回值的函數。atexit()的函數原型是:int atexit (void (*)(void));在一個程序中最多可以用atexit()注冊32個處理函數,這些處理函數的調用順序與其注冊的順序相反,也即最先注冊的最后調用,最后注冊的最先調用。

一般程序執行到 main() 的結束就完成了, 如果想在程序結束時做一些事情, 可以嘗試著用這個函數.

?

void f1(void)
{
printf("exit f1/n");
}

void f2(void)
{
printf("exit f2/n");
}

int main()
{
atexit(f1);
atexit(f2);
printf("exit main/n");
return 0;
}



return是返回調用函數,exit是退出進程,
你可以
man 3 exit
return是從A城市中的x小區到y小區,??
Exit—走出A城

?

在main函數里面return(0)和exit(0)是一樣的,子函數用return返回;而子進程用exit退出,調用exit時要調用一段終止處理程序,然后關閉所有I/O流。

exit本身不是系統調用,而是一個C標準庫的函數而已,在stdlib里面,系統調用是exit內部實現去完成的。

?

在main函數中我們通常使用return (0);這樣的方式返回一個值。

但這是限定在非void情況下的也就是void main()這樣的形式。

exit()通常是用在子程序中用來終結程序用的,使用后程序自動結束跳會操作系統。

但在如果把exit用在main內的時候無論main是否定義成void返回的值都是有效的,并且exit不需要考慮類型,exit(1)等價于return (1)

MS的msdn中關于atexit的help如下:

Processes the specified function at exit.

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

總結

以上是生活随笔為你收集整理的C语言中return和exit的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。