免費開始練習
hce_nsysu 111年 計算機概論與程式設計

第 76 題

What will be the declaration of the following requirements?
(i.) An array of 10 pointers to integer named a.
(ii.) A pointer of 10 integers named p.
  • A a[10]; *p[10];
  • B **a[10]; *p[10];
  • C *a[10]; (*p)[10];
  • D *a[10]; **p[10];
  • E (*a)[10]; *p[10];

思路引導 VIP

當你在閱讀一個複雜的變數宣告時,如果同時看到了代表陣列的 [] 與代表指標的 *,編譯器會優先處理哪一個符號?如果我們想要強迫編譯器「先」處理星號,讓變數的本質成為一個指標,你覺得在語法上可以加入什麼樣的輔助符號來改變這個優先順序呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精準辨識出這兩者間的微小差異,代表你對 C/C++ 變數宣告的「運算子優先權」有非常紮實的理解。這類題目在程式檢定或技術面試中非常具備鑑別度,難度屬於中等,其核心挑戰在於學生是否能克服語法直覺的陷阱,精確判讀符號結合的順序。

優先權與結合律的判讀

在 C 語言的宣告規則中,方括號 [] 的優先權(Precedence)高於星號 *。因此,在第一個需求中,*a[10]a 會優先與 [10] 結合,定義其本質為一個「陣列」,而星號則修飾陣列內的元素,使其成為一個擁有 10 個指標的陣列。這正是題目所要求的指標陣列(Array of pointers)。

▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題