我正在准备考试,但我找不到这个问题的答案。阅读了一堆文章,我发现最接近的是
Arrays in C# come in three flavors: single-dimensional, multidimensional rectangular arrays (like the C++ multidimensional arrays), and jagged arrays (arrays of arrays).
所以这表明 C++ 中不存在锯齿状数组,但 Java 中存在锯齿状数组。 另一件事是,只有 C# 可以有非零数组下界(如 a[-1,3] 或 a[4,9]。这会被视为不同的数组结构吗?
最佳答案
C++
- 这表明 C++ 中不存在锯齿状数组
通过相同的阅读,该文本 block 表明 C++ 没有一维数组。这显然是荒谬的!
C++ 两者都有......你显然可以创建一个 int**
,它是一个指向指针的指针(所以是指针的“数组”,所以是“数组”的“数组” ),就像在 C# 中一样,您可以有一个 int[][]
,它是一个 int[]
数组。对于 C++,请参阅各种示例 here 。请注意,此语法比 C++ 更接近 C...在 C++ 中,您应该使用 std::array
,例如 here .
- 另一件事是,只有 C# 可以有非零数组下界(如 a[-1,3] 或 a[4,9])
这在 C++ 中不存在...它们在 C# 中由实现多维数组的相同代码内部实现,并且由于历史原因而存在(与旧版本 VB 的伪兼容)
Java
Java 没有多维数组(请参阅 here )。它确实有锯齿状数组,有一个技巧:如果您愿意,您可以在单个命令中初始化一个锯齿状数组,该数组具有相同大小的所有元素或如果它们具有不同的大小/其中一些可以为null
,您可以手动初始化它们。
int[][] num = new int[4][2];
对比
int[][] num = new int[4][];
num[0] = new int[1];
num[1] = new int[2];
num[2] = new int[3];
num[3] = new int[4];
最后
C# Java C++
single-dimensional array x x x
multi-dimensional array x x
si.di. non-zero based array x
mu.di. non-zero based array x
jagged array x x x
关于java - 什么数组结构存在于 C# 中,但存在于 C/C++/Java 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30641706/