阿摩線上測驗 登入

申論題資訊

試卷:112年 - 112 普通考試_資訊處理:程式設計概要#115544
科目:程式設計
年份:112年
排序:0

題組內容

一、根據以下C程式碼,回答下列問題:
64b0a05f0d62d.jpg

申論題內容

(一)請說明程式碼第8行至第12行中,每一行之運算子符號「*」及「&」操 作所代表的意義。(10分)

詳解 (共 1 筆)

詳解 提供者:hchungw

在 C 語言中,運算子 * 和 & 有著特定的含義:

  • *:當用在變數前面時,代表的是間接運算子或解參運算子。它被用來訪問指針變數所指向的值(即,取指針指向的變數的值)。
  • &:當用在變數前面時,代表的是取址運算子。它被用來獲取變數的內存地址。

在您提供的代碼第 8 行至第 12 行中:

  • 第 8 行:void f(int *z, int *w) 定義了一個函數 f,它有兩個參數 z 和 w,這兩個參數都是整數型別的指針,這意味著 z 和 w 可以存儲整數變數的地址。

  • 第 9 行:int n = 13; 這裡簡單地宣告了一個整數變數 n 並初始化為 13。

  • 第 10 行:g(w, &n); 這行代碼調用了函數 g。參數 w 是一個指向整數的指針,所以 g 函數將直接使用這個指針參照的值。&n 表示取變數 n 的地址,將這個地址傳給 g 函數的第二個參數。

  • 第 11 行:printf("*z = %d, *w = %d, n = %d\n", *z, *w, n); 這裡的 *z 和 *w 是通過指針 z 和 w 取它們所指向的值,n 則是直接使用該變數的值。

所以,在這段代碼中,* 用來從指針獲取值,而 & 用來獲取變數的地址。這些操作允許函數 f 和 g 通過參考來操作變數 i、j 和 n 的值,而不是通過值來操作(這意味著它們可以修改傳入的變數的值)。