免費開始練習
普通考試 105年 [電子工程] 計算機概要

第 24 題

以下 C 語言撰寫之程式,下列敘述何者正確?
#include
#include
int search(int *pt, int n, int key)
{
int *p;
for(p=pt; p < pt + n; p++)
if(*p == key)
return p - pt;
return 0;
}
int main()
{
int i, key;
int a[] = {6, 14, 7, 9, 23, 10, 5, 2, 11, 8};
printf("%d\n", &a[0]);
scanf("%d", &key);
i = search(a, sizeof(a)/ sizeof(a[0]), key);
printf("%d, %d\n", key, i);
system("PAUSE");
}
  • A 自定函數(user-defined)search()有錯誤,無法執行
  • B 若輸入數值 23,則主程式第二個輸出為 23, 4 並跳行
  • C 自定函數(user-defined)search()回傳的是一個地址
  • D 主程式中 main()中使用到未定義的函數

思路引導 VIP

請思考一下:在 search 函式中,當程式執行到 return p - pt; 這行指令時,變數 p(移動中的指標)與 pt(陣列起始點的指標)在記憶體中的相對位置代表什麼意義?如果將這兩個『記憶體位址』相減,得到的數值是一個位元組(Byte)地址,還是代表元素之間的距離?

🤖
AI 詳解 AI 專屬家教

優秀的表現!

你對指標運算(Pointer Arithmetic)的掌握非常紮實,這如同結構工程中的基礎力學,是寫出高效程式的關鍵。

  1. 觀念驗證
▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計:語法、指標與應用
查看更多「[電子工程] 計算機概要」的主題分類考古題