考虑以下代码
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/