如果我有一个数组并想要指向数组的第id个元素的指针是等价的吗?
int* hello = &Array[id];
int* hello = &(Array[id]);
答案 0 :(得分:4)
不,括号不是必需的,是的,这两个是等价的。数组下标has higher precedence比地址运算符。
答案 1 :(得分:2)
然而,在C中,它相当于
int *hello = Array+id;
(假设Array
是int
- s的数组或指向int
的指针。)
而且我敢说使用指针添加而不是取数组元素的地址更常见,即更惯用于C(但这是一个品味问题)。
PS。在C ++中,等价是不正确的,例如因为operator +
和operator []
可以是用户定义的(但不是指向int-s的指针)。