exit和return的區別

張楊發表於2018-04-20

轉載自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表示非正常退出。

1、exit函式和return函式的主要區別是:

1)exit用於在程式執行的過程中隨時結束程式,其引數是返回給OS的。也可以這麼講:exit函式是退出應用程式,並將應用程式的一個狀態返回給OS,這個狀態標識了應用程式的一些執行資訊。

main函式結束時也會隱式地呼叫exit函式,exit函式執行時首先會執行由atexit()函式登記的函式,然後會做一些自身的清理工作,同時重新整理所有輸出流、關閉所有開啟的流並且關閉通過標準I/O函式tmpfile()建立的臨時檔案。

exit是系統呼叫級別的,它表示了一個程式的結束,它將刪除程式使用的記憶體空間,同時把錯誤資訊返回父程式。通常情況:exit(0)表示程式正常, exit(1)和exit(-1)表示程式異常退出,exit(2)表示系統找不到指定的檔案。在整個程式中,只要呼叫exit就結束。

 

2)return是語言級別的,它表示了呼叫堆疊的返回;return是返回函式值並退出函式,通常0為正常退出,非0為非正常退出,請注意,如果是在主函式main,
自然也就結束當前程式了(也就是說,在main()裡面,你可以用return
n,也能夠直接用exit(n)來做),如果不是在main函式中,那就是退回上一層呼叫。在多個程式時,如果有時要檢測上個程式是否正常退出,就要用到上個程式的返回值。

相關文章