因為除了我決定在這里提出一個問題之外,我找不到任何可以解釋更多內容的閱讀材料int(*p)[5];
,這也可以作為其他用戶使用的參考,因為我認為這有點令人困惑。到底是int*(*asex)[5];什么?
我是自學成才的,但我從未在各種不同的課程中看到過它的解釋,而且我從未在實踐中使用過它。現在,我需要一個清楚的解釋,因為我正在為我的專案創建一個 C 代碼分析器。盡管沒有直接向我解釋,但我已經習慣了語言語意,所以這就是我認為的意思:
int(*a)[5];顯然是一個指向 5 個整數陣列的指標(指向 的指標int[5])int(**asex)[5];指向 5 個 int 指標陣列的指標?int(*arr[10])[10];那應該是一個包含 10 個指標的陣列int[10]int*(*asex)[5];那是什么?指向指標的指標int[5]?
我做錯了什么?此外,我覺得唯一真正的優勢是指標演算法,這是真的嗎?
uj5u.com熱心網友回復:
閱讀這些定義有一個技巧:螺旋法。
- 從符號開始
- 從左到右決議后綴運算子(
[]對于陣列和()函式),如果到達 a),則跳到下一條規則 - 然后從右到左決議前綴運算子,
*以獲得指向的指標 - 當您到達帶
(括號的運算式時跳回第 2 步。 - 如果您到達最后的型別停止。
將此應用于示例:
int(*a)[5];定義一個指向 5 個整數陣列的指標。通常,函式接收到的型別采用定義為的矩陣int mat[4][5];int(**asex)[5];定義一個指向 5 個整數陣列的指標的指標。上面定義的函式引數的地址型別。int(*arr[10])[10];定義一個包含 10 個指標的陣列,指向 10 個整數的陣列。您可以存盤 10 個指向具有 10 列和不同行數的矩陣的指標。- 最后
int*(*asex)[5];定義了一個指向陣列的指標,該陣列由 5 個指向 int 的指標組成。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/532348.html
標籤:数组C指针
