【发布时间】:2017-09-25 14:34:44
【问题描述】:
我正在学习 Java 数组,并且来自 C/C++ 背景,我试图围绕 Java 中数组的整个概念展开思考。 由于 Java 中的所有内容都是指针,因此我理解甚至数组也是指向对象(在本例中为数组对象)的指针,并且这些数组对象包含原始类型值(int[] ia)或指向对象的指针(String[] sa ),因为我们不能像在 C++ 中那样操作对象,而只能引用堆上的对象。 那么像这样在 C 代码中表示二维 Java 数组是否正确:
TYPE *(*(*aptr)[M])[N];
(*aptr) has type: TYPE *(*[M])[N] and is converted to: TYPE *(**)[N]
(*aptr)[m] has type: TYPE *(*)[N]
*(aptr)[m] has type: TYPE *[N] and is converted to: TYPE **
(*(*aptr)[m])[n] has type: TYPE *
so
TYPE obj = *(*(*aptr)[m])[n]) has type TYPE
我做对了吗?
【问题讨论】:
-
向谁提出了问题:我在问我的推理是否正确,如果不是,请提供正确的答案。
-
如果你在处理Java,你最好忘记指针。至少一开始。
-
@EugeneSh。是的,但是由于 Java 引用本质上是指针,我发现尝试在 C 代码中表示 Java 数组非常有启发性(仅用于学习目的)
-
我不明白你在问什么。那个代码是什么(甚至是代码)?
-
@FrankUnderwood 确实它不是代码(我们可以尝试将它提交给编译器:D)我问在 C 代码中表示 Java 数组是否正确,就像我在问题中所做的那样