c/c++中的這兩種書寫方法實在是很像,但是它們的含義有很大的不同,所以一定要能清晰地辨別它們。
簡單地說,int *p[4]
是指標陣列,int(*p)[4]
是指向陣列的指標
指標陣列:是乙個元素全為指標的陣列;陣列指標:可以理解為指標,只是這個指標型別不是int而是int[4]型別的陣列
int *p[4]
,p是乙個指標陣列,每乙個指向乙個int型的,等價於(int *) (p[4])
int (*p)[4]
,p是乙個熱指標,指向int[4]的陣列
上面的原因是,*
(間接引用運算子) 的優先順序低於的優先順序。
首先看int *p[4]
, 的優先順序高,所以塔首先是乙個大小為4的陣列,即p[4]
,剩下的int *
作為補充說明,即說明該陣列的每乙個元素為指向乙個整數型別的指標。int *p[4]
的儲存結構如下:
指標陣列的陣列元素的大小是不確定的,但是指標的個數是確定的。
再看int (*p)[4]
。它首先是乙個指標,即*p
,剩下的int[4]
作為補充說明,即說明指標p 是指向乙個長度為4的陣列。int (*p)[4]
的儲存結構如下:
陣列指標是元素單元大小是確定的,但是指標的個數是不確定的。
運算子優先順序
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
運算子優先順序 Python 運算子優先順序
python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...
運算子優先順序 PHP運算子優先順序
php運算子優先順序 結合方向 運算子附加資訊 非結合clone new clone 和 new左 array 非結合 遞增 遞減運算子 非結合 int float string array object bool 型別非結合 instanceof 型別右結合 邏輯操作符 左 算術運算子 左 算術運...