【问题标题】:Array indirection issue [duplicate]数组间接问题[重复]
【发布时间】:2019-05-04 05:09:32
【问题描述】:

我在 C 中遇到了数组间接寻址的问题。让我们声明一个数组:

int tab[3];

这三个变量如何显示相同的结果?看起来选项卡的内存单元包含地址本身和第一个值。我不明白。

tab
&tab
&tab[0]

【问题讨论】:

    标签: c arrays indirection


    【解决方案1】:

    tab 用于预期指针的上下文中时,像int tab[3] 这样的数组会衰减为指向第一个元素的指针。 &tab[0] 显然也是第一个元素的地址。

    类似但有点不同的是&tab,因为这实际上是一个int (*)[3]类型的指针,即它指向一个大小为3的整数数组。地址仍然与第一个元素的地址相同tab;但是您可能会观察到增加此类指针的差异,并且在分配 int* x = &tab 时可能会收到警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-28
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 2019-02-17
      • 2014-09-17
      相关资源
      最近更新 更多