【Wed Jun 01 2016 16:32:21】
C 程序運行的核心是函數的執行和調用,它構成了整個C 程序運行時結構的基礎框架。這一運行過程主要是在程序指令的驅動以及數據壓棧、清棧的支持下實現的。為了介紹這一過程,我們設計了一個簡單C 程序,如下所示:

1 int fun(int a,int b); 2 int m = 10; 3 4 int main() 5 { 6 int i=4; 7 int j=5; 8 m = fun(i,j); 9 printf("%d\n", m); //9 10 return 0; 11 } 12 13 int fun(int a,int b) 14 { 15 int c = 0; 16 c = a + b; 17 return c; 18 }
程序很簡單,卻凸現了函數調用和執行的最基本情況。我們把此情景展現在內存中,共有三個區域,分別是代碼區、靜態數據區和動態數據區。情景如圖1-1 所示。
代碼區裝載了這個程序所對應的機器指令,main 函數和fun 函數的機器指令裝載位置如圖1-2 所示。
全局變量m 的數值裝載在靜態數據區中,情景如圖1-3 所示。
程序開始執行前,動態數據區中沒有數據,情景如圖1-4 所示。