数组间接问题

时间:2018-12-02 21:21:45

标签: c arrays indirection

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

int tab[3];

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

tab
&tab
&tab[0]

1 个答案:

答案 0 :(得分:1)

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

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