程式語言C/C++/C#管理函數呼叫的方式

 程式語言C/C++/C#管理函數呼叫的方式

程式語言C/C++/C#管理程式中函數呼叫的方式很深,用到堆疊概念,若不懂得可以去google一下或修C++之類的課程,我稍微講解一下。 

程式語言C/C++/C#管理程式中函數呼叫方式採用堆疊,堆疊採用FILO(First In Last Out)。

就像箱子裡的書本一樣,放在最上面的書是最晚被放的,但它會最早被拿到。

當我執行這段程式碼時,執行程序大致如下:

//C++

void Z()

{

print("z");

print("end z");

}

void A()

{

print("a");

Z();

print("end a");

}

int main()

{

A();

return 0;

}




null->main()->A(),main()->Z(),A(),main()->A(),main()->main()->null
程式被執行前,堆疊會是null。
程式一開始被執行時編譯器會找main()函式,堆疊會是main()。
當A()這行被執行時電腦會把A()函式放到(push_back)堆疊最上方,堆疊為A(),main()
然後會呼叫A(),先執行print("a")這行,再執行Z()這行。當Z()這行被執行時電腦會把Z()函式放到(push_back)堆疊最上方,堆疊為Z(),A(),main()。當Z()被執行完後電腦會將控制權交給A(),A()函數繼續執行,堆疊是A(),main()。A()執行完後會剩下main()。main()執行完後,程式執行結束。


Comments

Popular posts from this blog

Thread(執行續)