如果我有一個數組,並且想要分配指向數組的id'th元素的指針,它們是否相等?Parens在這裏是必需的:&(Array [id])?發送元素#編號的指針
int* hello = &Array[id];
int* hello = &(Array[id]);
如果我有一個數組,並且想要分配指向數組的id'th元素的指針,它們是否相等?Parens在這裏是必需的:&(Array [id])?發送元素#編號的指針
int* hello = &Array[id];
int* hello = &(Array[id]);
不,括號是沒有必要的,是的,這兩個是等價的。數組下標has higher precedence比地址運算符。
然而,在C,它相當於
int *hello = Array+id;
(假設Array
被的int
-s陣列或一個指向int
)。
我敢說在C中使用指針加法而不是數組元素的地址是比較常用的,也就是說比較習慣用法(但這是一個味道問題)。
PS。 C++中的等價關係是不正確的,例如因爲operator +
和operator []
可能是用戶定義的(但不適用於指向int-s的指針)。
請注意,* everything * postfix的優先級最高,所以像' - >'這樣的運算符總是在中綴和前綴運算符之前應用。 – caf