多维数组和指向指针值的指针

问题描述 投票:1回答:1

鉴于以下内容:

int ar2[3][2];
int * pt;
int **p2;
p2 = &pt;
*p2 = ar2[0];

这就是我的书中所说的:

* p2是指向int的类型,使其与ar2 [0]兼容。回想一下,ar2 [0]是指向其第一个元素art2 [0] [0]的指针,也使得ar2 [0]类型指针指向int。

一切都是真的吗?

c arrays pointers
1个回答
0
投票

是。

* p2是指向int的类型,使其与ar2 [0]兼容。

为了使这更容易看到,ar2可以看作是指向数组的指针,即数组ar2 [0]。然后,ar2 + 1将指向ar2 [1],而ar2 + 2指向ar2 [2]。

因此,您可以定义int (* arp)[2] = ar2,明确地将ar2重新解释为指向数组的指针。

回想一下,ar2 [0]是指向其第一个元素art2 [0] [0]的指针,也使得ar2 [0]类型指针指向int。

然后,ar2 [0] +1将是指向ar2 [0] [1]的指针。


这样,您总是可以将数组重新解释为指向它的第一个元素的指针,可以是整数,数组甚至是另一个指针。

例如,int * par[3]将是一个3指针的数组,或者是指向3个指针中的第一个的指针(par将是int **par[0] int *)。

© www.soinside.com 2019 - 2024. All rights reserved.