C 在main 函式執行前,後執行了哪些操作

2021-10-03 13:39:51 字數 494 閱讀 2581

設定棧指標

初始化static靜態和global全域性變數,即data段的內容

將未初始化部分的全域性變數賦初值:數值型short,int,long等為0,bool為false,指標為null,等等,即.bss段的內容

全域性物件初始化,在main之前呼叫建構函式

將main函式的引數,argc,ar**等傳遞給main函式,然後才真正執行main函式

設定棧指標:

為棧分配相關的位置,用來放一些區域性變數和其他資料

初始化靜態和全域性變數:

把全域性和靜態變數初始化,放在相應的位置

將未初始化的全域性變數賦初值:

將未設定初值的全域性變數賦初值

全域性物件初始化:

在main之前呼叫建構函式

傳值給main函式:

argc為整數

ar**為指標的指標

執行全域性的析構函式

**可以用_onexit 註冊乙個函式,它會在main 之後執行; **

main執行前與執行後

所有的程式都從main開始執行,這是使用者能看到的執行入口,但其實作業系統建立程序後,把控制權交到了程式入口,這個入口往往是程式執行庫中的某個入口函式,這個入口函式做了大量的工作 1 設定棧指標 2 全域性物件的初始化 c c 的全域性變數以及c 全域性物件的建構函式等 3 初始化一些變數 4 將m...

簡述main 執行前後都發生了什麼?

題目 簡述main 執行前後都發生了什麼?1 mian 在執行第一行 之前,呼叫全域性物件 靜態物件的建構函式,初始化全域性變數 靜態變數。2 main 函式最後一句 執行之後會呼叫在atexit 中註冊的函式,並且呼叫順序與註冊順序相反。atexit 函式的引數是乙個指向函式的指標,通過將函式名作...

main函式執行前發生了什麼

main函式的身前 1.編譯器預設是找 start 符號,而不是 main 2.start 這個符號是程式的起始點 3.main 是被標準庫呼叫的乙個符號 我們寫程式,比如乙個模組,通常要有 initialize 和de initialize 但是我們寫 c 程式的時候為什麼有些模組沒有這兩個過程麼...