int a[10];
这里的&a和a是一样的,我不太明白逻辑为什么会这样。我可以说 a 的值与 &a 相同并且 *(a) 是 a[0]。 (但是 a 怎么不是指针)。 对于动态数组,我很清楚。
int *da = new int[10];
da的值是基地址,&da给出了指针存放的地址,我们推导da到达da[0]。
最佳答案
它们不一样。
a
是一个 int[10]
类型;一个数组。
&a
是指向 int[10]
类型的指针。
在某些情况下(传递给函数,在算术表达式中使用时),a
衰减 为int*
类型。然后,您可以使用指针算法 到达数组的其他元素。这可能是造成您困惑的原因。
da
是一个 int*
类型。
唯一衰减为自身的东西是函数指针。
关于c++ - 为什么在 C++ 中的静态数组中 &a 和 a 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52870247/