什么数组结构在c#中有,而在C/ c++ /Java中没有

本文关键字:c++ Java 而在 结构 数组 中有 什么 | 更新日期: 2023-09-27 17:53:37

我正在准备考试,有一个问题我找不到答案。读了很多文章,最接近的是

c#中的数组有三种形式:一维多维矩形数组(类似于c++的多维数组)和锯齿数组(数组的数组)。

这表明c++中没有锯齿数组,但在Java中存在。另一件事是c#可以有非零的数组下界(如[-1,3]或[4,9])。它会被认为是不同的数组结构吗?

什么数组结构在c#中有,而在C/ c++ /Java中没有

c++

  • 这表明c++中没有锯齿数组

通过同样的读取,文本块表明c++没有单维数组。这显然是荒谬的!

c++有…很明显,你可以创建一个int**,它是指向指针的指针(指针的"数组",数组的"数组"),就像在c#中,你可以创建一个int[][],它是int[]的数组。对于c++,请参阅此处的各种示例。注意,这个语法比c++更像C…在c++中,您应该使用std::array,如下所示。

  • 另一件事是c#可以有非零数组下界(如a[-1,3]或a[4,9])

这在c++中不存在…它们在c#内部由实现多维数组的相同代码实现,并且由于历史原因(与旧版本VB的伪兼容性)而存在

Java

Java没有多维数组(见这里)。它确实有锯齿数组,有一个技巧:如果你想,你可以初始化一个锯齿数组,所有元素的大小相同,在一个单一的命令如果它们有不同的大小/其中一些可以是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