考虑以下代码

int tab2[2];
tab2[0]=5;
tab2[1]=3;
std::cout << tab2[1] << std::endl;
std::cout << (&tab2)[1] << std::endl;

正如我在其他主题中所读到的,数组可以衰减为指向其第一个元素的指针。那么为什么上面代码中的 [] 对 tab2 和 &tab2 不起作用呢?有什么不同吗?

最佳答案

它已经“转换”为指针。您可以将 [] 表示法与数组或指针一起使用...
(&tab2) 意味着你得到了数组的地址......从指针的角度来看,它是一个指向指针( ** )的指针。

所以你试图将一个变量(它是一个数组)转换为一个指针。好的,但是随后您尝试访问 [1] 元素,该元素当然不存在,因为您的指针指向数组的地址......这样的表示法需要第二个数组。

关于c++ - 为什么 (&array)[i] 不取第 i 个元素的地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7614184/

10-10 18:03