鉴于以下内容:
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>
一切都是真的吗?
答案 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}})。