程序退出main()函數之後,繼續執行代碼

一、main()函數

【1】main()函數概念:
main()函數稱爲主函數,一個程序中有且只有一個,擁有程序的執行權,程序在執行時總是先找到主函數,然後從它開始執行,當它調用某個子函數時,便將執行權交給被調用函數,被調用函數執行完畢後,再將執行權還給主調函數,主函數繼續執行,一旦主函數結束,代表整個程序就結束了,那麼,程序退出main()函數之後,還有可能執行代碼嗎?答案是肯定的
【2】main()函數結束,如何再執行代碼?

  • 使用atexit()函數,來執行相關的“ 清理 ”工作
  • 頭文件#include<cstdlib>
  • 函數原型: int atexit ( void ( * function ) (void) );
  • 查資料解釋如下:
    這裏寫圖片描述
  • 簡單理解如下:

如果將一組指向函數的指針傳遞給atexit()函數,那麼在程序退出main()後,就能自動調用該函數;
兩點需要注意的地方:

  • 1:由atexit()指定的要在程序終止前執行的函數,(1)要用void關鍵字說明,(2)不能帶參數
  • 2:由atexit()指定的函數在入棧時的順序和調用atexit()的順序相反,即執行時遵循先調用後執行事物
  • 示意圖:
    -這裏寫圖片描述

二、 代碼呈現

爲了代碼簡介,通俗易懂,那麼就設計爲在主函數中,調用三次atexit()函數,對應函數只做一件事,如果一旦被調用,就打印出一句話:“該函數的功能”,如: printf("my_exit1() funcation \n\n");下面,我們來設計算法:

【1】代碼實現:

void my_exit1(void)
{
    printf("my_exit1() funcation \n\n");
}

void my_exit2()
{
    printf("my_exit2() funcation \n\n");
}

void my_exit3()
{
    printf("my_exit3() funcation \n\n");
}
int main()
{
    atexit(my_exit1);
    atexit(my_exit2);
    atexit(my_exit3);
    printf("現在,退出這個此程序\n\n");
    return 0;
}

【2】結果如下所示:
這裏寫圖片描述
所以說,在主函數退出之後,並不是完全不可以再繼續執行某些代碼,只是需要找準方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章