#include<iostream>
#include<iomanip>
void main()
{
int i,j;
int pole[3][3]={1,2,3,4,5,6,7,8,9};
*(*(pole+2)+2)=0;
for(i=0; i<3;i++)
{
for(j=0;j<3;j++)
{
cout << setw(5)<< pole[i][j];
}
cout << endl;
}
}
这是我的程序,我得到的输出如下:
1 2 3
4 5 6
7 8 0
但是,我无法理解这条线的确切含义:
*(*(pole+2)+2)=0;
在我的理解中,它是一个指向数组指针的指针,所以基本上,我们首先要做的是:
*(pole+2)
它指向数组的第二个元素。然后
*(*(pole+2)+2)
哪个指向数组的第 4 个元素?这样对吗?如果是这样,我们如何将最后一个 [3][3] 元素更改为 0?
谢谢你。
最佳答案
这里 pole
是一个 3 行 3 列的二维数组。因此,当数组索引从 0
开始时,您正在分配 pole[2][2] = 0
这实际上意味着 0
被分配给第 3 行和第 3 列元素。*(*(pole+2)+2) == *(pole[2] + 2) == pole[2][2]
关于c++ - 数组指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22021231/