免費開始練習
普考申論題 110年 [資訊處理] 程式設計概要

第 二 題

📖 題組:
四、程式語言 C 可使用不同資料型別的變數存取資料與傳遞函式的參數。 #include #include #include void myFunction(int *a, int b, int *c, char *d){ c[1] = *a + b; d[*c] = d[2]; b = 17; int *r = c + 1; c = a; *c = *a + 1; printf("during:%s %d %d %d %d\n", &d[1], *a, b, *c, *r); } int main(){ char animal[7] = "cat"; int x = strlen(animal); int z[3] = {1, 3, 5}; int * y =(int *)malloc(sizeof(int)*3); int *p = &x; int *q = &z[1]; q[1] = *p + 10; printf("before:%s %d %d %d %d\n", animal, *z, z[1], z[2], x); myFunction(p, x, q, animal); printf("after:%s %d %d %d %d\n", animal, z[0], z[1], z[2], x); return 0; }
📝 此題為申論題,共 3 小題

小題 (二)

請說明比較 C 程式宣告一個陣列時,如上述程式變數 y、z,使用一般陣列變數與指標變數的異同。(5 分)

思路引導 VIP

本題要求比較靜態宣告的陣列(int z[3])與動態配置記憶體的指標陣列(int *y = malloc(...))。應從記憶體配置區域(Stack vs Heap)、變數本身的可變性(常數指標 vs 變數指標),以及生命週期與釋放方式三個角度進行論述。

🤖
AI 詳解
AI 專屬家教

【考點分析】 考查 C 語言中靜態陣列與動態陣列的底層差異,主要圍繞在記憶體區段的分配、指標的常數性,以及資源管理。 【分析與論述】

小題 (一)

請說明上述程式執行的結果。(15 分)

思路引導 VIP

本題測驗 C 語言的指標運算、陣列操作及字串處理。必須畫出記憶體配置圖,逐行追蹤主程式中的變數,以及進入函式後指標操作所引發的副作用(Side Effect)。特別注意 char animal[7] = "cat" 實際上記憶體中存放的是 'c', 'a', 't', '\0', '\0', '\0', '\0'。要注意傳址呼叫對原本陣列與變數的改動。

🤖
AI 詳解
AI 專屬家教

【考點分析】 考查 C 語言進階的指標運算(Pointer Arithmetic)、傳址呼叫與傳值呼叫的作用域差異、陣列與指標的等價操作,以及字串結尾字元(Null Terminator)的概念。 【分析與論述】

小題 (三)

請說明比較 C 程式語言中,函式參數傳遞方法,傳值呼叫(call by value)與傳址呼叫(call by address)異同。(5 分)

思路引導 VIP

這是一題非常傳統的比較題。需明確定義「傳值」與「傳址」的行為模式,比較兩者對原變數的影響,以及在執行效能與記憶體開銷上的優劣(例如傳遞大型結構時的差異)。

🤖
AI 詳解
AI 專屬家教

【考點分析】 考查函式呼叫的參數傳遞機制,評鑑考生是否理解如何保護原資料不受修改,以及如何透過指標達成資料的雙向傳遞與優化效能。 【分析與論述】

🏷️ 相關主題

程式設計基礎概念與實作演練
查看更多「[資訊處理] 程式設計概要」的主題分類考古題