程式練習題庫
← 回題目列表
c難度 ●●●

指標與傳值:變數更新的差異

在 C 語言中,變數的傳遞方式會影響函式內部的操作是否能改變原始變數的值。本題旨在幫助你理解「傳值 (pass-by-value)」與「傳址 (pass-by-pointer/reference)」之間的關鍵差異,並對應到 Python 中變數賦值時的行為。

請實作一個 C 函式 update_values,其簽名為 int update_values(int val_a, int *ptr_b)

函式需求:

  1. 將傳入的整數 val_a 的值增加 10。請注意,這個操作只會影響函式內部的 val_a 副本。
  2. ptr_b 所指向的記憶體位置的值增加 20。這個操作會直接修改 ptr_b 所指向的原始變數。
  3. 函式應回傳 val_a(經過內部增加 10 後的值)與 ptr_b 所指向的值(經過內部增加 20 後的值)的總和。

main 函式中:

  1. 宣告兩個整數變數 num1num2,並分別賦予初始值(例如 num1 = 10, num2 = 20)。
  2. 呼叫 update_values 函式,將 num1 以傳值方式傳入 val_a,將 num2 的位址以傳址方式傳入 ptr_b
  3. 將函式的回傳值儲存起來。
  4. 使用 printf 印出 main 函式中 num1num2 的最終值,以及 update_values 函式的回傳值。

輸入: 無特定輸入。你可以在 main 函式中自行設定 num1num2 的初始值。

回傳: update_values 函式需回傳一個整數,代表 val_a (內部修改後) 和 *ptr_b (內部修改後) 的總和。

邊界情況: 請假設傳入的指標 ptr_b 永遠是有效的,不會是 NULL

提示

思考在 C 語言中,如何取得一個變數的記憶體位址?又如何透過一個指標來存取或修改它所指向的記憶體位置的值?這些操作符號在 C 語言中具有特殊意義。

C 題不提供線上執行,自己在本機編譯,寫完可以請 AI 看看。

討論區

登入後就能留言和評分。

    還沒有人留言。