【发布时间】:2017-12-26 15:46:48
【问题描述】:
鉴于以下情况:
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。
一切都是真的吗?
【问题讨论】:
-
本书简化了事情。
ar2[0]是ar2[3][2]的第一个元素,它是一个二维数组;但是,C 中的二维数组是一维数组的数组,因此第一个元素是一维数组。您可以通过sizeof(ar2[0])检查其大小来轻松检查。现在在 C 中的赋值和参数传递数组中衰减或“调整”为指针,因此语句*p2 = ar2[0];是可能的,但ar2[0]本身不是指针。 -
这是我的回答,谢谢@PeterA.Schneider
-
@PeterA.Schneider 你应该把它作为一个实际的答案。