【发布时间】:2026-02-26 19:20:05
【问题描述】:
如果我有:
int A[10][20];
printf("%p",A[3]);
它将打印A[3][0]的地址。
但是,我想知道这个包含指针的一维数组A[3]是否真的存在,或者它是通过某种方式计算出来的。
【问题讨论】:
-
@MarcoBonelli 问题是关于“指针数组”。没有声明。
-
@MarcoBonelli 从技术上讲,我认为,像这样声明的二维数组,没有
int指针的 actual 数组;只是一个连续的 10x20 整数块。 -
啊,是的,没错,A 中没有指针,只是一个连续的整数块。
-
这里的'A'只是一个双指针。二维数组以行主要或列主要方式存储。 “A”指向数组的基地址。如果数组的维度和它存储的数据类型的大小已知,则可以计算一对索引的地址。
-
在考虑底层内存安排的更微妙方面时,这实际上是一个非常好的问题。
标签: c arrays pointers multidimensional-array