c++ - 为什么在 C++ 中的静态数组中 &a 和 a 相同?

标签 c++ arrays

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/

相关文章:

java - 将应用程序事件从 C++ 公开到 Java

c++ - 在 cocos2d-x 3 中异步预加载 spritsheet 并使用它

c++ - 如何使用 vscode 增加 C++ 中的最大堆栈大小

c++ - 我怎样才能找到这个令人难以置信的神秘链接器错误的原因?

c++ - 如何计算指针的哈希值?

c++ - 数组打印出错误的数字

arrays - 使用 jq,如何在不更新所有其他对象的情况下将元素 append 到数组?

Javascript 计算分配给对象属性的唯一值总数

javascript - 如何根据用户将告诉键及其值的子数组的值来过滤此数组

C - 字节数组到结构(dns 查询)