什么数组结构在C#中,而不是在C/C+中+/JAVA

什么数组结构在C#中,而不是在C/C+中+/JAVA,java,c#,c++,c,array-difference,Java,C#,C++,C,Array Difference,我正在准备考试,有一个问题我找不到答案。读了一堆文章,我发现最接近的是 数组中的数组有三种:一维、多维矩形数组(如C++多维数组)和锯齿数组(数组数组)。 这表明C++中没有锯齿数组,但它存在于java中。 另一件事是,只有C可以有非零数组下限(如[-1,3]或[4,9])。它会被视为不同的数组结构吗?C++ 这表明C语言中没有锯齿状数组++ 通过相同的阅读,文本块表明C++没有一维数组。这显然是荒谬的! C++同时具有这两种功能……很明显,您可以创建一个int**,这是指向指针的指针(指针

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

<>数组中的数组有三种:一维、多维矩形数组(如C++多维数组)和锯齿数组(数组数组)。 <>这表明C++中没有锯齿数组,但它存在于java中。 另一件事是,只有C可以有非零数组下限(如[-1,3]或[4,9])。它会被视为不同的数组结构吗?

C++

  • 这表明C语言中没有锯齿状数组++

通过相同的阅读,文本块表明C++没有一维数组。这显然是荒谬的! C++同时具有这两种功能……很明显,您可以创建一个

int**
,这是指向指针的指针(指针的“数组”和数组的“数组”),就像在C中一样,您可以创建一个
int[][
,这是
int[]的数组对于C++,请参阅各种例子。注意,这种语法比C++更为C……在C++中,你应该使用<代码> STD::数组< /C> >,类似于

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

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

Java

Java没有多维数组(请参阅)。它确实有交错数组,但有一个技巧:如果需要,可以在一个命令中初始化所有元素大小相同的交错数组,或者如果它们大小不同/其中一些可以为
null
,则可以手动初始化它们

int[][] num = new int[4][2];
vs

所以最后

                            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

C和C++也有锯齿形数组。你需要专门创建它。为什么要下注?这不是一个很坏的问题……他本来可以做一些研究……但我不认为它是坏的。@ HACKS,没关系。我需要一个答案,就是在C++中存在什么数组结构,如果java中存在锯齿数组,我不在乎它存在于C++中。o、 或者反之亦然。是的,这就是问题所在,我已经读了很多相同的东西,我需要一个关于C#中存在什么数组结构的答案。所以非零下界被认为是一个好的答案?对我来说,它感觉只是一些微小的差异,而不是完全不同的数组结构。@Erndob非零下界是一个复杂的野兽。。。您不能在C#中直接创建它们,您必须使用
数组.CreateInstance
来创建它们…并且它们的类型与其他多维数组的类型相同(除了使用特殊数组类型的一维非零下限)。因此它们属于多维数组的同一“族”(因为它们使用相同的CLR内部类)。@Erndob在.NET中有两种类型的数组:“简单数组”:以0开头的一维数组,“慢速复杂数组”:多维或非0索引或两者兼而有之。锯齿状数组是一种超结构,你可以把它们都放在上面,因为锯齿状数组是数组数组的数组。我想是的,那么什么数组结构在c#中,而不是在java/c++/c中?因为我读过很多书,在这个线程中的人回答的是相同的,而不是不同的。或者只是坏问题?@Erndob看到最后一张表了吗
                            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