java - 什么数组结构存在于 C# 中,但存在于 C/C++/Java 中?

标签 java c# c++ c array-difference

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

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/

相关文章:

java - 如何制作一个网格,其中每个属性都是另一个 TextView 下方的 TextView

java - JPanel 出现在两个位置

java - Spring MVC + Hibernate 具有双向关系

c# - 让 DisplayFor(m => m.Property) 显示换行符和格式?

c# - C# 可以像 Objective C 一样在 main 之前或之后运行代码吗

java - openimaj中有OCRProcessor的具体实现吗

c# - 了解 C# 中的异步(套接字)

c++ - 在 Doxygen 中将文本映射到 HTML 实体

c++ - 字符串类中的相等性测试运算符

c++ - 在 c/c++ 中的源文件之间共享变量的最佳策略是什么?