C++ 数组指针

C++ 数组指针,c++,C++,然而,我很难理解这句话的确切含义: 1 2 3 4 5 6 7 8 0 据我所知,它是指向数组指针的指针,所以基本上,我们首先要做的是: *(*(pole+2)+2)=0; 它指向数组的第二个元素。然后 *(pole+2) 哪个指向数组的第四个元素?这是正确的吗?如果是,我们如何将最后一个[3][3]元素更改为0 谢谢。这里的pole是一个3行3列的2D数组。因此,当数组索引从0开始时,您正在分配pole[2][2]=0,这实际上意味着0被分配给第三行和第三列元素 *(*(2)

然而,我很难理解这句话的确切含义:

1 2 3

4 5 6

7 8 0
据我所知,它是指向数组指针的指针,所以基本上,我们首先要做的是:

  *(*(pole+2)+2)=0;
它指向数组的第二个元素。然后

*(pole+2)
哪个指向数组的第四个元素?这是正确的吗?如果是,我们如何将最后一个[3][3]元素更改为0


谢谢。

这里的
pole
是一个3行3列的2D数组。因此,当数组索引从
0
开始时,您正在分配
pole[2][2]=0
,这实际上意味着
0
被分配给第三行和第三列元素


<代码> *(*(2)+2)=*(极[ 2 ] +2)= =极点[2 ] [2 ] < /代码> < /P> < P>我刚刚学习了C++中的指针和数组,所以希望能帮助

您声明了一个2D数组,它实际上只是一个int类型数组的数组

(极点+2)指向极点的基址,并向其添加2(整数数组的大小),以便:

2*int(4字节)*3(数组大小)=24字节

因此,它向地址添加了24个字节。它现在指向第三个阵列。然后,它指出:

第三阵列基址+2*int(4字节)

这将导致该数组的第三个索引为9。然后将该值更改为0

关键是第一个指针指向数组数组。第二个指针指向该数组内部的索引


希望我没有把您弄糊涂。

示例中没有任何直接的指针
pole
是一个二维整数数组,当您尝试添加到任一数组时,您正在强制转换为指针。@chris感谢您的解释。我更明白一点。关于如何得到最后一个元素,我的解释正确吗?你的解释不包括解引用
pole+2
给出了
pole[2]
的地址,然后你去引用它得到
int[3]
(我称之为
a
),然后再加上2,给出
a[2]
的地址,然后去引用它。一般来说,
*(a+b)
a[b]
(和
b[a]
)是一样的,所以
*(*(a+b)+c)
a[b][c]
相同。只需将
=
更改为
=
,这肯定会清除我头脑中的许多问题。非常感谢!@user3352341
*(pole+2)
*(*(pole+2)+2)