轉載自https://blog.csdn.net/firefly_2002/article/details/7960595函數
1. exit用於結束正在運行的整個程序,它將參數返回給OS,把控制權交給操做系統;而return 是退出當前函數,返回函數值,把控制權交給調用函數。
2. exit是系統調用級別,它表示一個進程的結束;而return 是語言級別的,它表示調用堆棧的返回。
3. 在main函數結束時,會隱式地調用exit函數,因此通常程序執行到main()結尾時,則結束主進程。exit將刪除進程使用的內存空間,同時把錯誤信息返回給父進程。
4. void exit(int status); 通常status爲0,表示正常退出,非0表示非正常退出。spa
一、exit函數和return函數的主要區別是:操作系統
1)exit用於在程序運行的過程當中隨時結束程序,其參數是返回給OS的。也能夠這麼講:exit函數是退出應用程序,並將應用程序的一個狀態返回給OS,這個狀態標識了應用程序的一些運行信息。.net
main函數結束時也會隱式地調用exit函數,exit函數運行時首先會執行由atexit()函數登記的函數,而後會作一些自身的清理工做,同時刷新全部輸出流、關閉全部打開的流而且關閉經過標準I/O函數tmpfile()建立的臨時文件。blog
exit是系統調用級別的,它表示了一個進程的結束,它將刪除進程使用的內存空間,同時把錯誤信息返回父進程。一般狀況:exit(0)表示程序正常, exit(1)和exit(-1)表示程序異常退出,exit(2)表示系統找不到指定的文件。在整個程序中,只要調用exit就結束。進程
2)return是語言級別的,它表示了調用堆棧的返回;return是返回函數值並退出函數,一般0爲正常退出,非0爲非正常退出,請注意,若是是在主函數main, 天然也就結束當前進程了(也就是說,在main()裏面,你能夠用return n,也可以直接用exit(n)來作),若是不是在main函數中,那就是退回上一層調用。在多個進程時,若是有時要檢測上個進程是否正常退出,就要用到上個進程的返回值。內存