2D Array - C против Java - PullRequest
       22

2D Array - C против Java

2 голосов
/ 30 сентября 2011

В чем разница между Динамическим 2D-массивом в C (int ** arr) и 2D-массивом в Java (int [] [] arr)?

Является ли 2D Array в C / C ++ похожим на 2D Array в Java?

Ответы [ 3 ]

1 голос
/ 30 сентября 2011

Ответ будет меняться в зависимости от части, которую вы хотите сравнить.

В Java массивы - это объекты, которые имеют методы и атрибуты, однако в C / C ++ они не являются объектами.

Обаиз них похожи таким образом, что размеры массива могут быть разными.Я имею в виду, что arr [0] может быть 3-мерным, arr [1] 5-мерным и т. Д.

Java проверяет границы массива, поэтому выдает исключения, если вы пытаетесь достичь индекса за пределами границ массива,однако в C / C ++ исключение не будет выдано, однако может возникнуть «ошибка сегментации».

0 голосов
/ 30 сентября 2011

Да, они очень похожи.Преимущество Java-массивов заключается в том, что вы не можете получить доступ к несуществующей ячейке (вы получаете исключение ArrayOutOfBoundsException).

Я думаю, что важным битом является то, что оба являются ссылками на массивпоэтому при передаче их методу нет дублирования / клонирования массивов.

0 голосов
/ 30 сентября 2011

Очень похоже. Конечно, массивы в Java являются полноценными объектами, а не «голыми» последовательностями составных типов, но многомерные массивы выполняются точно так же, с массивом указателей на массивы.

...