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

时间:2017-12-26 15:46:49

标签: c arrays pointers

鉴于以下内容:

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。 / p>

一切都是真的吗?

1 个答案:

答案 0 :(得分: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] {{ 1}})。