← 回題目列表
c難度 ●●●
指標與傳值:變數更新的差異
在 C 語言中,變數的傳遞方式會影響函式內部的操作是否能改變原始變數的值。本題旨在幫助你理解「傳值 (pass-by-value)」與「傳址 (pass-by-pointer/reference)」之間的關鍵差異,並對應到 Python 中變數賦值時的行為。
請實作一個 C 函式 update_values,其簽名為 int update_values(int val_a, int *ptr_b)。
函式需求:
- 將傳入的整數
val_a的值增加 10。請注意,這個操作只會影響函式內部的val_a副本。 - 將
ptr_b所指向的記憶體位置的值增加 20。這個操作會直接修改ptr_b所指向的原始變數。 - 函式應回傳
val_a(經過內部增加 10 後的值)與ptr_b所指向的值(經過內部增加 20 後的值)的總和。
在 main 函式中:
- 宣告兩個整數變數
num1和num2,並分別賦予初始值(例如num1 = 10,num2 = 20)。 - 呼叫
update_values函式,將num1以傳值方式傳入val_a,將num2的位址以傳址方式傳入ptr_b。 - 將函式的回傳值儲存起來。
- 使用
printf印出main函式中num1和num2的最終值,以及update_values函式的回傳值。
輸入:
無特定輸入。你可以在 main 函式中自行設定 num1 和 num2 的初始值。
回傳:
update_values 函式需回傳一個整數,代表 val_a (內部修改後) 和 *ptr_b (內部修改後) 的總和。
邊界情況:
請假設傳入的指標 ptr_b 永遠是有效的,不會是 NULL。
提示
思考在 C 語言中,如何取得一個變數的記憶體位址?又如何透過一個指標來存取或修改它所指向的記憶體位置的值?這些操作符號在 C 語言中具有特殊意義。
寫在這裡
C 題不提供線上執行,自己在本機編譯,寫完可以請 AI 看看。
討論區
登入後就能留言和評分。
還沒有人留言。