为什么在c ++中使用静态数组&a和相同?

cur*_*eek 2 c++ arrays

int a[10];
Run Code Online (Sandbox Code Playgroud)

现在这里和a和a是一样的,我不清楚逻辑为什么会如此.我可以说a的值与&a相同而*(a)是a [0].(但是a不是指针).在动态数组的情况下,我很清楚.

int *da = new int[10];
Run Code Online (Sandbox Code Playgroud)

da的值是基地址,&da给出指针存储的地址,我们deference da到达da [0].

Bat*_*eba 6

他们不一样.

a是一种int[10]类型; 一个数组.

&a是一个指向int[10]类型的指针.

在某些情况下(传递给函数,当在算术表达式中使用时),a 衰减到一个int*类型.然后,您可以使用指针算法来到达数组的其他元素.这可能是造成你困惑的原因.

da是一种int*类型.

衰弱的唯一因素函数指针.