我在C语言中遇到数组间接寻址问题。让我们声明一个数组:
int tab[3];
这三个变量如何显示相同的结果?该选项卡的存储单元看起来包含地址本身和第一个值。我不明白。
tab
&tab
&tab[0]
答案 0 :(得分:1)
在需要指针的上下文中使用int tab[3]
时,像tab
这样的数组会衰减为指向第一个元素的指针。 &tab[0]
显然也是第一个元素的地址。
与&tab
类似,但有点不同,因为它实际上是类型int (*)[3]
的指针,即它指向大小为3的整数数组。地址仍然与tab
中的第一个元素;但是您可能会观察到这样的指针会增加差异,并且在分配类似int* x = &tab
时可能会收到警告。