【发布时间】:2020-02-07 09:47:43
【问题描述】:
int *A [10];
为什么A[2][3] 是一个有效的左值。正如我在A[2] 中理解的那样,我们存储了一个指向整数的指针(单个整数不是数组)。那么[3]中的A[2][3]如何访问呢?
【问题讨论】:
-
代码为什么要这样做?
-
这是一道作业题?
-
C 没有边界检查。指向单个
int值的指针可以被视为单个元素的数组,超出任何数组的范围都会导致未定义的行为。您的程序有责任不超出范围。 -
@Someprogrammerdude 那么拥有 int * 类型有什么好处?
-
没有。第一个 (
int *A[10];) 将A声明为一个包含十个指向int的指针的数组。第二个 (int[] *A [10];) 语法无效。如果指向单个值或数组第一个元素的指针是程序逻辑的一部分,编译器本身并不关心(它甚至不知道)。您可能应该花一些时间阅读几本书以了解有关指针和数组的更多信息,或者请老师/导师帮助您(stackoverflow.com 不是辅导网站)。
标签: c arrays pointers multidimensional-array