什么数组结构在c#中有,而在C/ c++ /Java中没有
本文关键字:c++ Java 而在 结构 数组 中有 什么 | 更新日期: 2023-09-27 17:53:37
我正在准备考试,有一个问题我找不到答案。读了很多文章,最接近的是
c#中的数组有三种形式:一维多维矩形数组(类似于c++的多维数组)和锯齿数组(数组的数组)。
这表明c++中没有锯齿数组,但在Java中存在。另一件事是c#可以有非零的数组下界(如[-1,3]或[4,9])。它会被认为是不同的数组结构吗?
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