какой оператор создан специально только для обхода массива

Ответы на тест: Разработчик Bitrix Framework. Вступительный Тест

Увидеть ответ на вопрос: Есть код:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Что означает запись:

Увидеть ответ на вопрос: Что означает запись:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какое из условий будет истинно, если хотя бы одна из переменных true?

Увидеть ответ на вопрос: Какое из условий будет истинно, если хотя бы одна из переменных true?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

В каком случае в функции можно изменять значения переменной, заданное вне функции:

Увидеть ответ на вопрос: В каком случае в функции можно изменять значения переменной, заданное вне функции:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Как вывести на экран определенную ниже константу:

Увидеть ответ на вопрос: Как вывести на экран определенную ниже константу:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

В каком случае на экран будет выведен текст «Версия Битрикс 12»?

Увидеть ответ на вопрос: В каком случае на экран будет выведен текст «Версия Битрикс 12»?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Увидеть ответ на вопрос: Имеем массив:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какой код нужно использовать, если нам нужно вывести сообщение хотя бы один раз?

Увидеть ответ на вопрос: Какой код нужно использовать, если нам нужно вывести сообщение хотя бы один раз?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какой максимальный уровень вложенности многомерных массивов

Увидеть ответ на вопрос: Какой максимальный уровень вложенности многомерных массивов, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какой оператор создан специально только для обхода массива

Увидеть ответ на вопрос: Какой оператор создан специально только для обхода массива, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Как преобразовать значение переменной в целое число?

Увидеть ответ на вопрос: Как преобразовать значение переменной в целое число?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какая конструкция может использоваться для вывода текста?

Увидеть ответ на вопрос: Какая конструкция может использоваться для вывода текста?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Что будет выведено в результате работы кода?

Увидеть ответ на вопрос: Что будет выведено в результате работы кода?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

С помощью какой функции можно проверить, является ли переменная массивом?

Увидеть ответ на вопрос: С помощью какой функции можно проверить, является ли переменная массивом?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

С помощью какой конструкции можно подключить файл в php?

Увидеть ответ на вопрос: С помощью какой конструкции можно подключить файл в php?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какая конструкция позволяет включить файл только один раз, вне зависимости от количества вызовов?

Увидеть ответ на вопрос: Какая конструкция позволяет включить файл только один раз, вне зависимости от количества вызовов?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Увидеть ответ на вопрос: Есть код:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

С помощью какой инструкции функция может вернуть значение?

Увидеть ответ на вопрос: С помощью какой инструкции функция может вернуть значение?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Найдите ошибку в данном коде:

Увидеть ответ на вопрос: Найдите ошибку в данном коде:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какой из операторов является условным?

Увидеть ответ на вопрос: Какой из операторов является условным?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

С помощью какого цикла, можно выполнить обход массива?

Увидеть ответ на вопрос: С помощью какого цикла, можно выполнить обход массива?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Что означает такое объявление функции:

Читайте также:  хрустят кости на ногах и руках что делать

Увидеть ответ на вопрос: Что означает такое объявление функции:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Что будет результатом работы кода:

Увидеть ответ на вопрос: Что будет результатом работы кода:, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Требуется ли в PHP в обязательном порядке объявлять тип переменной?

Увидеть ответ на вопрос: Требуется ли в PHP в обязательном порядке объявлять тип переменной?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Какие типы значения может вернуть функция инструкцией return?

Увидеть ответ на вопрос: Какие типы значения может вернуть функция инструкцией return?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

В каком варианте правильно объявляется массив?

Увидеть ответ на вопрос: В каком варианте правильно объявляется массив?, можно купив подписку в которую входит данные ответы: 🚀

Купить подписку и ознакомить какие ответы на тесты 1с битрикс входят в нее, можно на главной странице

Источник

О тонкостях работы foreach в PHP

В недавнем дайджесте интересных ссылок о PHP я обнаружил ссылку на комментарий Никиты Попова на StackOverflow, где он подробно рассказывает о механизме «под капотом» управляющей конструкции foreach.
Поскольку foreach действительно иногда работает более, чем странным образом, я счел полезным сделать перевод этого ответа.

Внимание: этот текст подразумевает наличие базовых знаний о функциональности zval’ов в PHP, в частности вы должны знать что такое refcount и is_ref.
foreach работает с сущностями разных типов: с массивами, с простыми объектами (где перечисляются доступные свойства) и с Traversable-объектами (вернее, объектами, у которых определен внутренний обработчик get_iterator). Здесь мы, в основном, говорим о массивах, но я скажу и об остальных в самом конце.

Прежде чем приступить, пара слов о массивах и их обходе, важная для понимания контекста.

Как работает обход массивов

Массивы в PHP являются упорядоченными хеш-таблицами (элементы хеша объединены в двусвязный список) и foreach обходит массив, следуя указанному порядку.

Таким образом, внешние указатели массива могут быть использованы только когда вы полностью уверены, что при обходе никакого пользовательского кода выполняться не будет. А такой код может оказаться в самом неожиданном месте, типа обработчика ошибок или деструктора. Вот почему в большинстве случаев PHP приходится использовать внутренний указатель вместо внешнего. Если бы это было иначе, PHP мог бы упасть из-за segmentation fault, как только пользователь начнет делать что-нибудь необычное.

Проблема внутреннего указателя в том, что он является частью HashTable. Так что, когда вы изменяете его, HashTable меняется вместе с ним. И коль скоро обращение к массивам в PHP делается по значению (а не по ссылке), вы вынуждены копировать массив, чтобы в цикле обходить его элементы.

Простой пример, показывающий важность копирования (кстати, не такая большая редкость), это вложенная итерация:

Здесь вы хотите чтобы оба цикла были независимым, а не хитро перебрасывались одним указателем.

Итак, мы дошли до foreach.

Обход массива в foreach

Теперь вы знаете, для чего foreach приходится создавать копию массива, прежде чем обойти его. Но это явно не вся история. Сделает PHP копию или нет, зависит от нескольких факторов:

Итак, это первая часть тайны: функция копирования. Вторая часть это то, как текущая итерация выполняется, и она тоже довольно странная. «Обычный» образец итерации, который вы уже знаете (и который часто используется в PHP — отдельно от foreach) выглядит примерно так (псевдокод):

итерация foreach выглядит немного иначе:

Такой режим работы foreach также является причиной, по которой внутренний указатель массива переходит к следующему элементу, если текущий удалён, а не к предыдущему (как вы могли бы ожидать). Всё сделано так, чтобы отлично работать с foreach (но, очевидно, со всем остальным будет работать не так хорошо, пропуская элементы).

Последствия для кода

Первое следствие вышеописанного поведения в том, что foreach копирует итерируемый массив в многих случаях (медленно). Но отриньте страх: я пробовал удалить требование копирования и не смог увидеть ускорения работы нигде, кроме искусственных бенчмарков (в которых итерация происходила в два раза быстрее). Похоже, люди просто не итерируют достаточно много.

Второе следствие в том, что обычно не должно быть других следствий. Поведение foreach, в основном, вполне понятно пользователю и просто работает как следует. Вас не должно волновать, как происходит копирование (и происходит ли оно вообще), и в какой конкретно момент времени перемещается указатель.

И третье следствие — и тут мы как раз подходим к вашим проблемам — в том, что иногда мы видим очень странное поведение, которое трудно понять. Это происходит конкретно тогда, когда вы пытаетесь модифицировать сам массив, который вы обходите в цикле.

Большую коллекцию поведения в пограничных случаях, которые появляются, когда вы модифицируете массив в ходе итерации, можно найти в тестах PHP. Вы можете начать с этого теста, после чего изменять 012 на 013 в адресе, и так далее. Вы увидите, как поведение foreach будет проявляться в разных ситуациях (всякие комбинации ссылок и.т.д.).

А сейчас вернёмся к вашим примерам:

Та же ситуация, что и в первом тесте.

Но эти примеры недостаточно убедительны. Поведение начинает быть по настоящему непредсказуемым, когда вы используете current в цикле:

Теперь попробуем сделать небольшое изменение:

Здесь у нас is_ref=1, так что массив не копирован (так как и выше). Но сейчас когда есть is_ref, массив больше не нужно разделять, передавая по ссылке к current. Теперь current и foreach работают с одним массивом. Вы видите массив сдвинутым на единицу как раз из-за того, как foreach обращается с указателем.

То же самое вы увидите, когда будете делать обход массива по ссылкам:

Еще одна небольшая вариация, здесь мы присвоим наш массив еще одной переменной:

Итерация объектов

При итерации объектов имеет смысл рассмотреть два случая:

Объект не Traversable (вернее, не определен внутренний обработчик get_iterator)

В этом случае итерация происходит почти так же, как у массивов. Та же семантика копирования. Единственное отличие: foreach запустит некий дополнительный код, чтобы пропустить свойства, недоступные в текущей области видимости. Еще пара интересных фактов:

Читайте также:  brawl stars что это такое
Объект Traversable

В этом случае всё, что сказано выше, не будет применяться никоим образом. Также PHP не будет копировать и не будет применять никакие трюки вроде увеличения указателя до прохода цикла. Я думаю что режим прохода по обходимому (Traversable) объекту куда более предсказуем и не требует дальнейшего описания.

Замена итерируемого объекта во время цикла

Другой необычный случай, который я не упомянул — PHP допускает возможность замены итерируемого объекта во время цикла. Вы можете начать с одним массивом и продолжить, заменив его на полдороге другим. Или начать с массивом, в затем заменить его объектом:

Как видите, PHP просто начал обходить другую сущность, как только произошла замена.

Изменение внутреннего указателя массива во время итерации

Последняя деталь поведения foreach, которую я не упомянул (потому что может быть использована для получения по настоящему странного поведения): что может случиться если попытаться изменить внутренний указатель массива во время прохода цикла.

Тут вы можете получить не то, что ожидали: если вызывать next или prev в теле цикла (в случае передачи по ссылке), вы увидите, что внутренний указатель переместился, но это никак не повлияло на поведение итератора. Причина в том, что foreach делает бекап текущей позиции и хеша текущего элемента в HashPointer после каждого прохода цикла. На следующей проходе foreach проверит, не менялась ли позиция внутреннего указателя и попытается восстановить ее, используя этот хеш.

Давайте посмотрим что означает «попытается». Первый пример показывает, как изменение внутреннего указателя не меняет режим foreach:

Теперь давайте попробуем сделать unset элементу, к которому обратится foreach при первом проходе (ключ 1):

Тут вы увидите, что счетчик сброшен, так как не удалось найти элемент с подходящим хешом.

Имейте в виду, хеш — всего лишь хеш. Случаются коллизии. Попробуем теперь так:

Работает так, как мы и ожидали. Мы удалили ключ EzFY (тот, где как раз был foreach), так что был сделан сброс. Также мы добавили дополнительный ключ, поэтому в конце мы видим 4.

И вот тут приходит неведомое. Что произойдёт, если заменить ключ FYFY с FYFZ? Давайте попробуем:

Сейчас цикл перешёл непосредственно к новому элементу, пропуская всё остальное. Это потому что ключ FYFY имеет коллизию с EzFY (вообще-то, все ключи из этого массива тоже). Более этого, элемент FYFY находится по тому же адресу в памяти, что и элемент EzFY который только что был удален. Так что для PHP это будет та же самая позиция с тем же хешом. Позиция «восстановлена» и происходит переход к концу массива.

Источник

Способы перебора списка в Java

Просмотрите различные способы перебора списка в Java

1. введение

Перебор элементов списка – одна из наиболее распространенных задач в программе.

В этом уроке мы рассмотрим различные способы сделать это на Java. Мы сосредоточимся на повторении списка по порядку, хотя идти в обратном порядке тоже просто.

2. для петли

Во-первых, давайте рассмотрим некоторые варианты цикла.

Давайте начнем с определения списка стран для наших примеров:

2.1. Базовый для цикла

Цикл for определяет три типа операторов, разделенных точками с запятой. Первый оператор-это оператор инициализации. Второй определяет условие завершения. Последнее утверждение-это предложение update.

Здесь мы просто используем целочисленную переменную в качестве индекса:

При инициализации мы должны объявить целочисленную переменную, чтобы указать начальную точку. Эта переменная обычно действует как индекс списка.

Условие завершения-это выражение, которое после вычисления возвращает логическое значение, как только это выражение принимает значение false цикл завершается.

Предложение update используется для изменения текущего состояния переменной индекса, увеличивая или уменьшая его до момента завершения.

2.2. Улучшено для цикла

Расширенный цикл for – это простая структура, которая позволяет нам посещать каждый элемент списка. Он похож на базовый цикл for, но более удобочитаем и компактен. Следовательно, это одна из наиболее часто используемых форм для обхода списка.

Обратите внимание, что расширенный цикл for проще, чем базовый цикл for :

3. Итераторы

Итератор-это шаблон проектирования, который предлагает нам стандартный интерфейс для обхода структуры данных, не беспокоясь о внутреннем представлении.

Этот способ обхода структур данных предлагает множество преимуществ, среди которых мы можем подчеркнуть, что наш код не зависит от реализации.

Таким образом, структура может быть двоичным деревом или двусвязным списком, поскольку итератор абстрагирует нас от способа выполнения обхода. Таким образом, мы можем легко заменить структуры данных в нашем коде без неприятных проблем.

3.1. Итератор

Здесь мы демонстрируем использование обоих:

3.2. Листератор

/| ListIterator позволяет нам просматривать список элементов в прямом или обратном порядке.

4. forEach()

4.1. Повторяемость.инструкция foreach()

Синтаксис довольно прост:

До функции forEach все итераторы в Java были активны, то есть они включали цикл for или while, который проходил сбор данных до тех пор, пока не было выполнено определенное условие.

4.2. Поток.()

Здесь мы демонстрируем типичное использование потоков:

5. Заключение

Источник

Массивы Python

В Питоне нет структуры данных, полностью соответствующей массиву. Однако, есть списки, которые являются их надмножеством, то есть это те же массивы, но с расширенным функционалом. Эти структуры удобнее в использовании, но цена такого удобства, как всегда, производительность и потребляемые ресурсы. И массив, и список – это упорядоченные коллекции, но разница между ними заключается в том, что классический массив должен содержать элементы только одного типа, а список Python может содержать любые элементы.

Создание массива

Существует несколько способ создать массив. Ниже приведены примеры как это можно сделать.

Многомерный массив

Двухмерный массив в Python можно объявить следующим образом.

Операции с массивами

Давайте теперь рассмотрим операции, которые Пайтон позволяет выполнять над массивами.

Обход массива с использованием цикла for

Мы можем использовать цикл for для обхода элементов массива.

Обход многомерного массива

Для того чтоб получить элементы многомерного массива придётся использовать вложенные циклы.

Добавление

Мы можем использовать функцию insert() для вставки элемента по указанному индексу. Элементы из указанного индекса сдвигаются вправо на одну позицию.

Определение размера

Используйте метод len() чтобы вернуть длину массива (число элементов массива).
Не стоит путать размер массива с его размерностью!

Срез Python предоставляет особый способ создания массива из другого массива.

Функция pop

В Python удалить ненужные элементы из массива можно при помощи метода pop, аргументом которого является индекс ячейки. Как и в случае с добавлением нового элемента, метод необходимо вызвать через ранее созданный объект.

Читайте также:  какой лифчик одеть под белую рубашку

Методы массива

В Python есть набор встроенных методов, которые вы можете использовать при работе с list.

Метод Значение
append() Добавляет элементы в конец списка
clear() Удаляет все элементы в списке
copy() Возвращает копию списка
count() Возвращает число элементов с определенным значением
extend() Добавляет элементы списка в конец текущего списка
index() Возвращает индекс первого элемента с определенным значением
insert() Добавляет элемент в определенную позицию
pop() Удаляет элемент по индексу
remove() Убирает элементы по значению
reverse() Разворачивает порядок в списке
sort() Сортирует список

Модуль array

Если Вам всё-таки нужен именно классический массив, вы можете использовать встроенный модуль array. Он почти не отличается от структуры list, за исключением, пожалуй, объявления.
Вот небольшая демонстрация:

Типы элементов массива

Элементы массива в модуле array могут быть следующих типов:

Код типа Тип в C Тип в python
‘b’ signed char int
‘B’ unsigned char int
‘h’ signed short int
‘H’ unsigned short int
‘i’ signed int int
‘I’ unsigned int int
‘l’ signed long int
‘L’ unsigned long int
‘q’ signed long long int
‘Q’ unsigned long long int
‘f’ float float
‘d’ double float

Как Вы можете видеть, со строками модуль не работает.

Источник

Массивы в Java: создаём, заполняем, используем

Учимся работать с массивами в Java. Всё разбираем на примерах.

Массив — это структура данных, которая хранит набор пронумерованных значений одного типа.

Допустим, у нас есть класс из десяти учеников и нам нужно сохранить их оценки. Для этого можно создать десять переменных:

А если в нашем классе будет не десяток учеников, а в десять раз больше, не заводить же нам 100 переменных! На выручку приходят массивы.

Java-разработчик, преподаёт в Skillbox, осваивает машинное обучение.

Как объявить одномерный массив

С помощью квадратных скобок и специального слова new.

Такой синтаксис пришёл из языка C:

Но в Java предпочтительнее делать так:

Тип массива может быть любым (int, Integer, String, Date, byte, char, Long и так далее).

Инициализация массива по умолчанию

Объявим массив типа int из 10 элементов:

При подобной инициализации все элементы массива будут иметь значение по умолчанию. Для int это 0; для float и double — 0.0; для char — \0; для boolean — false, а для String и любого другого класса это null.

Размер массива (длина, протяжённость) определяется при объявлении, а изменить его можно только пересоздав массив.

Доступ к элементам массива

Начнём с одномерного массива. Каждый элемент в нём хранится под своим индексом.

Важно помнить, что в Java нумерация элементов массива начинается с 0. Поэтому индекс первого элемента равен 0, а у последнего определяется размером массива минус один.

Для доступа к элементу массива указывают имя массива и номер ячейки в квадратных скобках. Например, обратимся к первому элементу массива и выведем его значение:

В консоли мы получим число 0. Почему ноль — читайте выше, в пункте про инициализацию по умолчанию.

Заполним элементы массива. Для этого обратимся к каждому по индексу и присвоим значения с помощью оператора « =»:

Инициализация массива на этапе объявления

Теперь у нас есть массив, куда мы записали оценки десяти учеников. С этим уже удобнее работать, чем объявлять 10 переменных, но можно записать ещё короче:

Мы опустили размер массива, поставили фигурные скобки после квадратных и перечислили все значения через запятую. Размер массива теперь определяется числом элементов в фигурных скобках (в нашем случае их тоже 10).

Но нет предела совершенству:

После знака « =» остались только фигурные скобки с перечислением значений через запятую.

Обход одномерного массива

У массива в Java есть специальное поле length. Значение в нём нельзя изменить. Оно возвращает число элементов массива:

А раз мы знаем длину массива и что все его ячейки упорядочены, то остаётся обратиться к ним по очереди — в цикле:

С помощью счётчика в цикле for мы получаем индекс каждого элемента.

Напомним! Счётчик должен стартовать с 0, так как нумерация в массиве тоже начинается с 0.

И цикл будет продолжаться «пока счётчик меньше размера массива», а раз индекс последнего элемента на один меньше их количества, то выхода за границы массива в нашем цикле не произойдёт.

Массив можно обойти и в цикле foreach (подробнее о циклах):

И в обратном порядке:

Здесь счётчик стартует со значения на один меньше размера массива, и цикл продолжается «пока счётчик не меньше 0».

Можем пройтись и только по элементам с чётными индексами:

А вот как заполнить массив случайными значениями:

N-мерные массивы

Размерность массива определяется тем, сколько индексов нужно, чтобы однозначно указать на элемент в массиве.

Массивы бывают одномерными ( векторы), двумерными ( матрицы), трёхмерными и так далее. То есть можно создавать не просто массивы, но и массивы массивов, а также массивы массивов массивов и так далее.

Рассмотрим вариант с двумерным массивом. Остальные многомерные массивы создаются похоже.

Объявление двумерного массива

Чтобы создать двумерный массив, укажем его размеры в квадратных скобках:

Доступ к элементу подобного массива выглядит так:

Мы присвоили значение 2 элементу с индексами [0,1].

Для простоты представим двумерный массив в виде таблицы. Вот как выглядит наш массив (столбцы — это первый индекс в квадратных скобках, а строки — второй):

[0,0] = 0 [1,0] = 0 [2,0] = 0
[0,1] = 2 [1,1] = 0 [2,1] = 0
[0,2] = 0 [1,2] = 0 [2,2] = 0
[0,3] = 0 [1,3] = 0 [2,3] = 0

Несложно представить двумерный массив таблицей, а трёхмерный — кубом, но вот с массивами большей размерности так уже не получится.

Массивы внутри массива в Java могут быть разной длины. Зададим двумерный массив, где размер третьего массива (по индексу второго) равен двум элементам, а размер всех остальных — трём:

Как помним, размер массива нам не изменить, но мы можем присвоить новый массив элементу с нужным индексом.

Если мы объявляем двумерный массив так:

то размер каждого вложенного массива будет равен четырём элементам.

А теперь заменим массив под индексом 1 (длиной в четыре элемента) массивом из двух элементов:

Как видно из примера, мы можем обращаться к внутренним массивам нашего двумерного массива, а не только к значениям в этих массивах.

Проверим, что размер массива под индексом 1 теперь равен двум элементам. Для этого используем цикл с выводом в консоль:

Для обхода элементов двумерного массива применяем уже два цикла:

Источник

Сказочный портал