Массиви в C++ (відео)




массивы в c++, массивы в с++, одномерный массив

Массивы чрезвычайно важная тема в C . У програмах вони використовуються дуже часто і розібратися в цій темі необхідно досконально. Відразу вас порадую – понять и научиться применять массивы достаточно просто даже начинающему.

Итак, зачем же нужны массивы и что они из себя представляют? К настоящему моменту вы уже хорошо знаете, что данные программы хранятся в объявленных нами змінних певного типу (int, double, char… ). Но бывает так, что программе необходимо хранить сотни (а то и больше) переменных однотипных данных, а также необходимо с ними работать – присваивать значения, изменять их и т.д. К примеру, надо хранить порядковые номера строк. Согласитесь – будь-якому стане страшно від думки, что надо создать пятьсот переменных типа int, кожної дати унікальне ім'я і привласнити значення від 1-го до 500-та. (мне уже страшно :) В таком случае, массивы нас просто спасут.

Отметим основное и перейдем к практическому примеру:

  • массив в С – это совокупность определенного количества однотипных переменных, имеющих одно имя. К примеру, int array [3];. Эта запись означает, что мы объявили массив с именем array , который содержит в себе 3 переменные типа int;
  • переменные массива называют элементами ;
  • кожен елемент має свій унікальний індекс - свій порядковий номер. Используя индекс мы можем обращаться к конкретному элементу. ВАЖНО – индексация элементов массива начинается с 0. Так в массиве int array [3] первый элемент имеет индекс 0, а последний – 2. Чтобы обратиться, например, к нулевому элементу массива и изменить его значение, треба вказати ім'я масиву та в квадратних дужках вказати індекс елементу – array [0] = 33.

Рассмотрим пример:

В рядку 12 ми визначаємо целочисленную константу SIZE, которая будет хранить размер массива (определённое нами, количество его элементов). В рядку 13 оголошуємо масив: указываем тип данных, которые будут храниться в ячейках массива, даємо ім'я і вказуємо розмір в квадратних дужках . Важливо, что в квадратные скобки мы можем записывать только целые константные значения. Надо либо сразу вписать целое число в квадратные скобки при объявлении массива (int firstArray[100];), либо определить целочисленную константу до объявления массива и ввести в квадратные скобки имя этой константы (как в нашем примере). Второй способ использовать предпочтительней, если в ходе программы вам придется несколько раз обращаться к массиву через цикл. Объясняется это тем, что когда мы объявляем цикл, в ньому можна вказати умову зміни лічильника до значення SIZE. Вот представьте, что нам необходимо изменить размер массива с 10 элементов на 200. В этом случае, нам залишається всього на всього змінити значення целочисленной константи, и таким образом у нас автоматически подставятся новые значения размера и в массив, и во все циклы программы. Можете попробовать в нашем примере внести любую другую цифру в константу SIZE. И вы увидите, что программа будет прекрасно работать – создаст массив на столько элементов, на сколько вы укажете, внесет данные и отобразит их на экране.

У рядках 15 – 19 определяем цикл for. Его счетчик i будет служить индексом элементов массива. В самом начале, он равен 0 и с каждым шагом будет увеличиваться на единицу до тех пор, пока не станет равным SIZE – кількості елементів масиву. Зверніть увагу, в одному циклі ми і присвоюємо різні значення елементів масиву і в наступному рядку звертаємося до них, чтобы вывести данные, которые они хранят, на екран.

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

массивы в c++, массивы в с++, одномерный массив

Присвоить значение элементам массива можно разными способами – инициализировать его при создании либо с помощью цикла. Если размер массива большой, есть прекрасная возможность использовать цикл for или while для ініціалізації його елементів. Так мы сделали в нашем примере. Можно заполнить массив случайными числами – об этом у нас есть отдельная статья.

А якщо масив зовсім невеликий, к примеру на 5 элементов, форматувати його можна відразу при оголошенні:

массивы в c  , масиви в с ++, одновимірний масив

Так элементу с индексом 0 – firstArray[0] – будет присвоено значение 11, а последнему элементу массива firstArray[4] – значение 15. Есть такая фишка – вы можете не указывать размер массива в квадратных скобках и сделать такую запись:

массивы в c  , масиви в с ++, одновимірний масив

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

Так же при начальной инициализации элементов массива, когда массив необходимо очистить от «мусора» (остаточных данных других программ в памяти) лучше сразу присвоить всем элементам значение 0. Це виглядає так:

массивы в c  , масиви в с ++, одновимірний масив

Следует запомнить, что такая инициализация возможна только для заполнения нулями. Если необходимо заполнить элементы массива какими-либо другими числами, краще застосовувати цикл. У C ++ 11 (стандарт кодирования) при использовании списковой инициализации (инициализации с фигурными скобками) дозволяється навіть відкинути знак = .

массивы в c  , масиви в с ++, одновимірний масив

Хочется показать еще один прием инициализации при создании массива. К примеру, для массива из 30-ти элементов нам надо внести значения 33 і 44 только в ячейки с индексом 0 і 1 соответственно, а остальные заполнить нулями. Тогда делаем так:

массивы в c  , масиви в с ++, одновимірний масив

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

Организовать заполнение массива можно и при помощи оператора cin:

Чтобы присвоить или изменить значение конкретного элемента, надо обратиться к нему, використовуючи його індекс. К примеру, все значения массива из 500-та элементов нас устраивают, але необхідно змінити значення лише одного. Тоді ми звертаємося до нього за його індексом : firstArray[255] = 7;

З цим розібралися, теперь давайте посмотрим, яким же чином масив розташовується в оперативній пам'яті. Масив типу int з п'яти елементів займе 20 байт памяти – 4 байта (int) * 5 (количество элементов) – и эти данные будут располагаться в памяти последовательно, как показано на рисунке:

массивы в c  , масиви в с ++, одновимірний масив
массив int из пяти элементов в оперативной памяти

Подведем итог и отметим всё самое важное о массивах:

  • синтаксис объявления массива :

тіп_Данних_Массіва імя_массіва [размер];

  • переменные массива называются элементами, а каждый элемент имеет свой порядковый номер – индекс.
  • нумерація індексів елементів масиву починається з нуля!!!
  • форматувати масив можна тільки при його створенні – int firstArray[3] = {1, 2, 3}; Виконувати ініціалізацію пізніше вже не допускається: firstArray[3] = {1, 2, 3}; Якщо масив ні инициализирован на початку, можно присвоить значения его элементам, використовуючи цикли або просто звертаючись до необхідного елементу через його індекс.
  • масив може бути одновимірним – таким, как рассмотрен в этом примере, і багатовимірним – dvumernиm, трехмерным… (их мы рассмотрим в одной из наших следующих статей).

Не забывайте о необходимости практиковаться в решении задач – Завдання: Массиви в C++ . Хочете дізнатися більше про масивах в C ++ (в том числе о символьных массивах и строках)? Посмотрите этот видео-урок:

Нові уроки з програмування:

Массиви в C++ (відео)
4 (80%) 4 голосів

19 думки про "Массиви в C++ (відео)

  1. Тепер я знаю, як просто зберігати безліч однотипних даних з допомогою масивів в С++. Дякую за доступність викладання матеріалу!

  2. Когда отмечал самое важное, надо было указать, что произвольный доступ к элементу массива выполняется за O(1). В тексте статьи ИМХО стоит пояснить, что такое время произвольного доступа обеспечивается тем, что размер элементов массива фиксирован и элементы располагаются в памяти последовательно.
    Как-то красиво нарисовать картинку для примера типа:
    [код]
    int a[99];
    a[5] = 1; // эквивалентно (a + sizeof(int) * 5) = 1
    [/код]
    Тобто,. обращение к элементу a[99999] произойдет также быстро, как к a[2], например.
    Можно это как-то красиво нарисовать.

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

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

    Я бы тут же про динамические массивы написал. Статью вообще удалил бы и написал бы заново. В статье куча ляпов и неточностей. С терминологией беда.

  3. Все вот эти преамбулы я бы убрал:
    [quote]
    Массивы чрезвычайно важная тема в С++.

    Сразу вас обрадую – понять и научиться применять массивы достаточно просто даже начинающему.

    Отметим основное и перейдем к практическому примеру:

    Ну и еще один способ присвоения значений – это обращаться к каждому элементу массива отдельно.

    ….
    [/quote]

    Просто сравни 2 фрагмента:
    [quote]

    массив в С – это совокупность определенного количества однотипных переменных, имеющих одно имя – к примеру, int array [3];. Эта запись означает, что мы объявили массив с именем array , который содержит в себе 3 переменные типа int;
    переменные массива называют элементами ;
    кожен елемент має свій унікальний індекс - свій порядковий номер. Используя индекс мы можем обращаться к конкретному элементу. ВАЖНО – индексация элементов массива начинается с 0. Так в массиве int array [3] первый элемент имеет индекс 0, а последний – 2. Чтобы обратиться, наприклад, к нулевому элементу массива и изменить его значение, треба вказати ім'я масиву та в квадратних дужках вказати індекс елементу – array [0] = 33.
    [/quote]
    [quote]

    синтаксис объявления массива :

    тіп_Данних_Массіва імя_массіва [размер];

    посмотрев на синтаксис можно дать определение: массив – это определенное количество однотипных данных, объединенных общим именем.
    переменные массива называются элементами, а каждый элемент имеет свой порядковый номер – индекс.
    нумерация элементов массива начинается с нуля!!!
    инициализировать массив можно либо при его создании, либо используя циклы.
    массив может быть одномерным – таким, как рассмотрен в этом примере, и многомерным – двумерным, трехмерным… (их мы рассмотрим в одной из наших следующих статей).
    [/quote]

  4. Володимир, спасибо за Ваши комментарии. Думаю, многим будет нелишним почитать дополнительную информацию о массивах.
    Что касается написания статейориентируюсь на новичков в программировании и стараюсь писать максимально доступно. Вам, как специалисту , это конечно кажется примитивным, но начинающие программисты оценят. Кому понадобится более глубокое рассмотрение темы, тот не одну книгу еще прочитает.
    p.s. Номера строкизменили.

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

    Инициализация с фигурными скобкамиэто тонкость, яка, ІМХО, новичкам вообще не особ нужна. Не все компиляторы это поддерживают. А если статья ориентируется на студентов, то надо учесть, что в наших ВУЗах любят давать студентам всякие античные компиляторы типа BC3.1.

    1. цікаво, почему ВУЗы дают этиантичныекомпиляторы, если visual express в свободном доступе

      1. не не слышал что б вузы нам что-то навязывали старое! звичайно, хочешь в Code::Blocks пиши, хоч в Visual Studio, не помню когда под Борланд что писал, но помнят руки старые времена!!!
        смешно вспомнить но начинал с Dev-C++ айдишки) эх было время!

    2. Володимир, во-первых этот сайт для начинающих, так что не стоит строго судить всё что тут написано! Как мне кажется, то новичкам тут будет самое то! Не надо тут говорить как кому учиться, я думаю что многие разберутся. По-друге, если у Вас есть замечания по тексту, или исправления ошибокто Орфус Вам в помощь, не надо засорять чат!
      В-третьих, по-моему автор сайта лучше знает как излагать код, не надо тут навязывать своего мнения, как надо что делать, это же обучаловка для будущих тру программеров, а не для профи, так чтоИнициализация с фигурными скобками – это тонкость, яка, ІМХО, новичкам вообще не особ нужна”, считаю этот текст глупым, ведь это тонкости языка (!), и тут всё важно, нужно всё знать, как и что пишется, что бы в будущем в чужом коде не таращить глазаа это что такое и почему”!!!

      Всего хорошего! Да прибудет Буст в Вами!

  6. Так народ, не мешайте Админу работать!!!_) Он и сам знает какой материал выкладыватьпринимаются только дельные советы и замечания! Не забувайте, видите ошибку, “бейтев Орфус, Ctrl + Enter Вам в помощь!!!

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *