我正在尝试使用 C++ 中的指针访问多维数组的元素:
#include<iostream>
int main() {
int ia[3][4] = {
{0, 1, 2, 3},
{4, 5, 6, 7},
{8, 9, 10, 11}
};
int (*pia)[4] = &ia[1];
std::cout << *pia[0]
<< *pia[1]
<< *pia[2]
<< *pia[3]
<< std::endl;
return 0;
}
我希望 *pia
成为 ia
中的第二个数组,因此输出为 4567。
但是输出是 4814197056,所以我显然做错了。如何正确访问行中的元素?
最佳答案
就目前而言,你必须写
std::cout << (*pia)[0] ...
因为 []
比 *
绑定(bind)得更牢固。但是,我认为你真正想做的是
int *pia = ia[1];
std::cout << pia[0]
<< pia[1]
<< pia[2]
<< pia[3]
<< std::endl;
附录:顺便说一下,您得到输出的原因是 *pia[i]
是另一种编写方式 pia[i][0]
。由于 pia[0]
是 ia[1]
,pia[1]
是 ia[2]
,并且pia[2]
及以后是垃圾(因为 ia
太短了),你打印 ia[1][0]
,ia[2][0]
然后垃圾两次。
关于c++ - 在 C++ 中使用指针访问多维数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27186494/