C C main函式執行前後還會發生什麼

2021-07-11 15:11:17 字數 735 閱讀 5839

c/c++語言執行過程中是不是所有的動作都由main()函式引起,來看下面的**:

#include 

class a

~a()

};a a;

int main()

這段**很簡單,但是最終是不是只是列印了this is main這句話,顯然不是,實際的結果是按照下面順序的三句話:

this is

constructor

this

ismain

this

isdestructor

首先main()函式只不過是提供了乙個函式入口,在main()函式中的顯示**執行之前,會由編譯器生成_main函式,其中會進行所有全域性物件的構造以及初始化工作。簡單來說對靜態變數、全域性變數和全域性物件來說的分配是早在main()函式之前就完成的,所以c/c++中並非所有的動作都是由於main()函式引起的。

同理在main()函式執行後,程式退出,這時候會對全域性變數和全域性物件進行銷毀操作,所以在main()函式還會執行相應的**。

在上面的例子中,a的建構函式會先執行,再執行main,最後會呼叫a的析構函式。

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

設定棧指標 初始化static靜態和global全域性變數,即data段的內容 將未初始化部分的全域性變數賦初值 數值型short,int,long等為0,bool為false,指標為null,等等,即.bss段的內容 全域性物件初始化,在main之前呼叫建構函式 將main函式的引數,argc,a...

linux 程式執行前後臺切換

shell支援作用控制,有以下命令 1.command 讓程序在後台執行 2.jobs 檢視後台執行的程序 3.fg n 讓後台執行的程序n到前台來 4.bg n 讓程序n到後台去 ps n 為jobs檢視到的程序編號.fg bg jobs ctrl z都是跟系統任務有關的,雖然現在基本上不怎麼需要...

如何在Python函式執行前後增加額外的行為

首先來看乙個小程式,這個是計量所花費時間的程式,以下是以往的解決示例 from functools import wraps,partial from time import time def timing func none,frequencies 1 if func is none print ...