java和c ++中的多维数组有什么区别?

use*_*801 3 c++ java

char a[][4] = {{'a','a','a'},
               {'a','a','a'},
               {'a','a','a'},
               {'a','a','a'}};
Run Code Online (Sandbox Code Playgroud)

在c ++中,您必须初始化数组的最后一个索引.

在java中如果这样做会导致错误.

有人可以解释我为什么?

当我在java中检查这样的数组长度时.

System.out.println(a[0].length);
Run Code Online (Sandbox Code Playgroud)

结果是数组中列的长度

让我们说在数组的末尾有一个'\ 0',当我像这样用c ++检查数组的长度时.

cout << strlen(a[0]) 
Run Code Online (Sandbox Code Playgroud)

我得到整个数组的长度.

我可以像在java中一样在c ++中获取数组中行或列的长度吗?

这是java中的becuase数组是一个对象吗?

Bri*_*and 9

在Java中,多维数组是包含数组的数组(并且多维数组变量不一定包含多维数组,即它可以为null).在C++中,多维数组变量本身就是一个巨大的数组,立即创建,其多维性质只是语法糖.在C++中,您必须初始化除数组的第一个索引之外的所有索引,以告诉编译器如何在多维数组语法和它实际在幕后使用的单个巨大数组之间进行转换.

通过将多维数组初始化为指向数组指针数组的指针,您可以在C++中获得更多类似Java的行为,而不仅仅是作为数组的数组(Java中的对象大多等同于C++中对象的指针).当然,那么你必须担心Java为你做的内存管理.

  • 或者你可以停止引导一个asketic生活并使用std :: vector或std :: array :) (7认同)