假设我有2D数组,例如:
A[3][10];
这是否意味着它是一个由3个指针组成的数组? (每个人都指向10个元素中的1个)
所以A是指向3个指针中的1个的指针吗?
答案 0 :(得分:4)
没有
这意味着它是一个包含3个数组的数组,其中每个数组都是一个包含10个元素的数组。
如果有帮助,您可以将其视为一个包含编译器支持的30个元素的大型一维数组,允许您使用二维索引(编译器执行必要的计算以将索引转换为平面索引)。实际上,这实际上就是它的实现方式。
答案 1 :(得分:2)
不,它不是3个指针的数组。查看内存表示:
A[3][10]
=
|_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_| |_|_|_|_|_|_|_|_|_|_|
^ ^
px px+4
也就是说,A
是一个包含3个数组的数组,每个数组包含10个元素。这三个数组在内存中是连续的。也就是说,A[0][9]
之后的元素是A[1][0]
。
当然,正如克里斯所说,不要将数组与指针混淆。