下圖是一個執行時堆疊(run-time stack)中之啟動紀錄(activation record)的示意圖:
Returned value
Local variables
Function parameters
Dynamic link
Static link
Return address
說明如何使用啟動紀錄中的function parameters 實作下列兩種副程式的參數傳遞
(parameter passing)方法:call-by-value(或稱pass-by-value)和call-by-address
(或稱pass-by-address, call-by-reference)。(10 分)
考慮下列的C 程式語言的程式片段,說明當主程式main 呼叫副程式foo 之後,
副程式foo 的啟動紀錄之function parameters 內容為何?並寫出主程式main 的輸
出值。(10 分)
int c=5;
void foo(int x, int* y) {
int a=1, b=2;
*y = a + b * x ;
c = a + b + c;
}
int main (void) {
int a=10, b=20;
foo(b, &a);
printf("%d, %d, %d\n", a, b, c);
}
98 年公務人員高等考試三級考試試題
類 科: 資訊處理
全一張
(背面)