Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² c: Π Π°Π±ΠΎΡ‚Π° с массивами Π² языкС Π‘ΠΈ

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² C++ β€” ΡƒΡ€ΠΎΠΊ 5

БСгодня ΠΌΡ‹ с ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ массивах. Π’Ρ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ пСрСмСнная β€” это ячСйка Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎ СдинствСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Массив β€” это ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π³Ρ€ΡƒΠΏΠΏΡƒ студСнтов ΠΈΠ· дСсяти Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ фамилия. Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ студСнта β€” Π½Π΅ Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ„Π°ΠΌΠΈΠ»ΠΈΠΈ всСх студСнтов.

  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива
  • ОписаниС синтаксиса
  • Π’Ρ‹Π²ΠΎΠ΄ элСмСнтов массива Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ»
  • ОбъявлСниС массива Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
  • Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива

string students[10] = {
    "Иванов", "ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²", "Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²",
    "АхмСдов", "Π•Ρ€ΠΎΡˆΠΊΠΈΠ½", "Π’Ρ‹Ρ…ΠΈΠ½",
    "АндССв", "Π’ΠΈΠ½ Π”ΠΈΠ·Π΅Π»ΡŒ", "ΠšΠ°Ρ€Ρ‚ΠΎΡˆΠΊΠΈΠ½", "Чубайс"
};

ОписаниС синтаксиса

Массив создаСтся ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ обычная пСрСмСнная. Для хранСния дСсяти Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ массив, состоящий ΠΈΠ· 10 элСмСнтов.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов массива задаСтся ΠΏΡ€ΠΈ Π΅Π³ΠΎ объявлСнии ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ элСмСнты массива сразу ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки. Π’ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках значСния элСмСнтов массива ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ. Π’ ΠΊΠΎΠ½Ρ†Π΅ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½ΠΎΠΉ скобки ставится Ρ‚ΠΎΡ‡ΠΊΠ° с запятой.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вывСсти наш массив Π½Π° экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° cout.

#include <iostream>
#include <string>
int main()    
{
    std::string students[10] = {
        "Иванов", "ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²", "Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²",
        "АхмСдов", "Π•Ρ€ΠΎΡˆΠΊΠΈΠ½", "Π’Ρ‹Ρ…ΠΈΠ½",
        "АндССв", "Π’ΠΈΠ½ Π”ΠΈΠ·Π΅Π»ΡŒ", "ΠšΠ°Ρ€Ρ‚ΠΎΡˆΠΊΠΈΠ½", "Чубайс"
    };
    std::cout << students << std::endl; // ΠŸΡ‹Ρ‚Π°Π΅ΠΌΡΡ вывСсти вСсь массив нСпосрСдствСнно
    return 0;
}

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ этот ΠΊΠΎΠ΄ ΠΈ посмотритС, Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π“ΠΎΡ‚ΠΎΠ²ΠΎ? А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ запуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈ сравнитС с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ. Π’ ΠΌΠΎΠ΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС Π²Ρ‹Π²ΠΎΠ΄ Π±Ρ‹Π» ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ:

  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄: 0x7ffff8b85820
  • Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄: 0x7fff7a335f90
  • Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄: 0x7ffff847eb40

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ выводится адрСс этого массива Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, Π° Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π½Π΅ «Иванов» ΠΈ Β«ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²Β».

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π΅ΠΉ выдСляСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ мСсто Π² памяти. Если ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° int, Ρ‚ΠΎ Π½Π° машинном ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΎΠ½Π° описываСтся двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ β€” Π΅Π΅ адрСсом ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² памяти хранятся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Массив Ρ‚ΠΈΠΏΠ° int ΠΈΠ· 10 элСмСнтов описываСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ адрСса Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠΈ количСства Π±Π°ΠΉΡ‚, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ этот массив. Если для хранСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа выдСляСтся 4 Π±Π°ΠΉΡ‚Π°, Ρ‚ΠΎ для массива ΠΈΠ· дСсяти Ρ†Π΅Π»Ρ‹Ρ… чисСл Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ 40 Π±Π°ΠΉΡ‚.

Π’Π°ΠΊ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅, ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, адрСса Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ? Π­Ρ‚ΠΎ сдСлано для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π°Ρ‚Π°ΠΊ пСрСполнСния Π±ΡƒΡ„Π΅Ρ€Π°. Вакая тСхнология называСтся Ρ€Π°Π½Π΄ΠΎΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ адрСсного пространства ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ популярных ОБ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вывСсти ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива β€” Ρ„Π°ΠΌΠΈΠ»ΠΈΡŽ студСнта Иванова.

#include <iostream>
#include <string>
int main()
{    
    std::string students[10] = {
        "Иванов", "ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²", "Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²",
        "АхмСдов", "Π•Ρ€ΠΎΡˆΠΊΠΈΠ½", "Π’Ρ‹Ρ…ΠΈΠ½",
        "АндССв", "Π’ΠΈΠ½ Π”ΠΈΠ·Π΅Π»ΡŒ", "ΠšΠ°Ρ€Ρ‚ΠΎΡˆΠΊΠΈΠ½", "Чубайс"
    };
    std::cout << students[0] <<  std::endl;
    return 0;
}

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ, запускаСм. УбСдились, Ρ‡Ρ‚ΠΎ вывСлся ΠΈΠΌΠ΅Π½Π½ΠΎ «Иванов». Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ нумСрация элСмСнтов массива Π² C++ начинаСтся с нуля. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, фамилия ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ студСнта находится Π² students[0], Π° фамилия послСднСго β€” Π²

students[9].

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования нумСрация элСмСнтов массива Ρ‚Π°ΠΊΠΆΠ΅ начинаСтся с нуля.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ вывСсти список всСх студСнтов. Но сначала ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, Π° Ρ‡Ρ‚ΠΎ Ссли Π±Ρ‹ вмСсто Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΈΠ· дСсяти студСнтов, Π±Ρ‹Π»Π° Π±Ρ‹ ΠΊΠ°Ρ„Π΅Π΄Ρ€Π° ΠΈΡ… ста, Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ ΠΈΠ· тысячи, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ вСсь унивСрситСт? Ну Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΆΠ΅ ΠΌΡ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ дСсятки тысяч строк с cout?

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π½Π΅Ρ‚! ΠœΡ‹ возьмСм Π½Π° Π²ΠΎΠΎΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Ρ‹Π» написан ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠΊ.

Π’Ρ‹Π²ΠΎΠ΄ элСмСнтов массива Ρ‡Π΅Ρ€Π΅Π· Ρ†ΠΈΠΊΠ»

#include <iostream>
#include <string>
int main()
{
    std::string students[10] = {
        "Иванов", "ΠŸΠ΅Ρ‚Ρ€ΠΎΠ²", "Π‘ΠΈΠ΄ΠΎΡ€ΠΎΠ²",
        "АхмСдов", "Π•Ρ€ΠΎΡˆΠΊΠΈΠ½", "Π’Ρ‹Ρ…ΠΈΠ½",
        "АндССв", "Π’ΠΈΠ½ Π”ΠΈΠ·Π΅Π»ΡŒ", "ΠšΠ°Ρ€Ρ‚ΠΎΡˆΠΊΠΈΠ½", "Чубайс"
    };  
    for (int i = 0; i < 10; i++) {
        std::cout << students[i] << std::endl;
    }
    return 0;
}

Если Π±Ρ‹ Π½Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ массив ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тысяч Ρ„Π°ΠΌΠΈΠ»ΠΈΠΉ, Ρ‚ΠΎ ΠΌΡ‹ Π±Ρ‹ просто ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счСтчика Ρ†ΠΈΠΊΠ»Π° β€” строку for (.

..; i < 10; ...) Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π½Π° for (...; i < 10000; ...).

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅ Ρ‡Ρ‚ΠΎ счСтчик нашСго Ρ†ΠΈΠΊΠ»Π° начинаСтся с нуля, Π° заканчиваСтся дСвяткой. Если вмСсто ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° строгого нСравСнства β€” i < 10 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ «мСньшС, Π»ΠΈΠ±ΠΎ Ρ€Π°Π²Π½ΠΎΒ» β€” i <= 10, Ρ‚ΠΎ Π½Π° послСднСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обратится ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ элСмСнту массива β€” students[10]. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкам сСгмСнтации ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠΌΡƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ β€” ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ошибки Π±Ρ‹Π²Π°Π΅Ρ‚ слоТно ΠΎΡ‚Π»ΠΎΠ²ΠΈΡ‚ΡŒ.

Массив, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ значСниями ΠΏΡ€ΠΈ объявлСнии.

ОбъявлСниС массива Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

string students[10];
// ΠΈΠ»ΠΈ
string teachers[5];

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ содСрТат Π² сСбС «мусор» ΠΈΠ· Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ, Π½ΠΎ Π΅Ρ‰Π΅ Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ, памяти. НСкоторыС компиляторы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ GCC, Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ всС элСмСнты массива нулями ΠΏΡ€ΠΈ Π΅Π³ΠΎ создании.

ΠŸΡ€ΠΈ создании статичСского массива, для указания Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ константа. Π Π°Π·ΠΌΠ΅Ρ€ выдСляСмой памяти опрСдСляСтся Π½Π° этапС компиляции ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² процСссС выполнСния.

int n;
cin >> n;
string students[n]; /* НСвСрно */

Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти Π² процСссС выполнСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с динамичСскими массивами. Но ΠΎ Π½ΠΈΡ… Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΠΌ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ пустой массив ΠΈΠ· 10 элСмСнтов.

Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ массива с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

#include <iostream>
#include <string>
using std::cout;
using std::cin;
using std::endl;
int main()
{    
        int arr[10];
        // ЗаполняСм массив с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹
        for (int i = 0; i < 10; i++) {
            cout << "[" << i + 1 << "]" << ": ";
            cin >> arr[i];
        }
        // И Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ массив.
        cout << "\nΠ’Π°Ρˆ массив: ";
        for (int i = 0; i < 10; ++i) {
            cout << arr[i] << " ";
        }
        cout << endl;
        return 0;
}

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΏΡ€ΠΈ компиляции исходников ΠΈΠ· ΡƒΡ€ΠΎΠΊΠΎΠ² β€” Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ компилятора, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅. Если Π²Ρ‹ нашли ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² ΠΊΠΎΠ΄Π΅ β€” Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠ± этом Π² коммСнтариях ΠΊ ΡƒΡ€ΠΎΠΊΡƒ.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ β€” ΠΎΡ‡Π΅Π½ΡŒ ваТная Π²Π΅Ρ‰ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Автор совСтуСт Π²Π°ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠΊ: Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² C++ β†’.

Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ простыми словами ΠΈ ΠΈΠ· Ρ‡Π΅Π³ΠΎ состоит

Массив Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ β€” это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранится упорядочСнный Π½Π°Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… элСмСнтов. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π΅ΡΡ‚ΡŒ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования ΠΈ Π½ΡƒΠΆΠ½Ρ‹ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ хранСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ быстрой Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΡ€ΠΎΠ±ΠΎΠΊ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… находится ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ β€” элСмСнт массива, Π° Π½ΠΎΠΌΠ΅Ρ€ Π½Π° ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ΅ β€” индСкс элСмСнта, порядковый Π½ΠΎΠΌΠ΅Ρ€, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках программирования Ρƒ массивов Π΅ΡΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ названия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ряд, ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° эти матСматичСскиС понятия: ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ элСмСнтов с Ρ‡Π΅Ρ‚ΠΊΠΎ зафиксированной ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ.

ΠšΠΎΠΌΡƒ ΠΈ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ массивы

Массивами ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ практичСски всС программисты. Они Π½ΡƒΠΆΠ½Ρ‹ Π² ситуациях, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ чисСл, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ строк.

Массив ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚:

  • Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ нСсколько ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ;
  • ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ;
  • Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту;
  • быстро ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ дСйствия ΠΊΠΎ всСм элСмСнтам массива;
  • ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹ΡΠΎΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния дСйствий.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, это просто ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ρ‡Π΅ΠΌ Β«ΠΊΠ»Π°ΡΡ‚ΡŒΒ» нСсколько ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… элСмСнтов Π² Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ΠœΠ°ΡΡΠΈΠ²Ρ‹ β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… структур Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΈ Π±Π΅Π· Π½ΠΈΡ… ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΊΡƒΠ΄Π° слоТнСС.

Как устроСн массив

ВСхничСски массив β€” это пСрСмСнная, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя нСсколько Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, своСобразный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это всС числа ΠΈΠ»ΠΈ строки. РасполоТСны элСмСнты Π² сосСдних ячСйках памяти, поэтому ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ элСмСнтов ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ дСйствия с Π½ΠΈΠΌΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ довольно быстро. ВрСмя доступа ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту фиксировано, Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° любой ΠΈΠ· Π½ΠΈΡ… Π»Π΅Π³ΠΊΠΎ благодаря индСксам.

Π£ классичСского статичСского массива фиксированная Π΄Π»ΠΈΠ½Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ количСство элСмСнтов. Она задаСтся ΠΏΡ€ΠΈ создании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ: Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ сразу ΠΏΠΈΡˆΠ΅Ρ‚ Π² описании массива, сколько элСмСнтов ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. Если Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ этого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡˆΠ΅ΡΡ‚ΠΎΠΌΡƒ элСмСнту массива ΠΈΠ· пяти элСмСнтов, Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка.

Π˜Π½Π΄Π΅ΠΊΡΡ‹ Π² стандартном массивС ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ΄ΡƒΡ‚ ΠΏΠΎ порядку: 0, 1, 2 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков программирования индСксация начинаСтся с нуля.

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с элСмСнтами массива

Одно ΠΈΠ· достоинств использования массива β€” Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ значСния, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… ΠΈΠ»ΠΈ ΠΎΠ±Π½ΡƒΠ»ΡΡ‚ΡŒ. МоТно ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ элСмСнтам ΠΏΠΎ индСксу. НапримСр, array[5] β€” это ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ пятому элСмСнту массива ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ array.

Π‘ элСмСнтами ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ: ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° экран ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΎΡ€ΠΌΡƒΠ» ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ языков Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠΎ всСм элСмСнтам массива: Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ строчку ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ вСсь массив.

Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ особыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. НапримСр, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π² массив строку ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π‘Ρ‹Π²Π°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для обращСния ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ ΠΈ послСднСму элСмСнтам массива, для ΠΈΡ… удалСния ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, для получСния Π΄Π»ΠΈΠ½Ρ‹ массива ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Π°Ρ рСализация ΠΈ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ зависят ΠΎΡ‚ языка программирования. Π’ Ρ€Π°Π·Π½Ρ‹Ρ… языках Ρ€Π°Π±ΠΎΡ‚Π° с массивами ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, Π½ΠΎ ΡΡƒΡ‚ΡŒ структуры Π΄Π°Π½Π½Ρ‹Ρ… остаСтся ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ.

Какими Π±Ρ‹Π²Π°ΡŽΡ‚ массивы

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ массив β€” ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ выглядит ΠΊΠ°ΠΊ ряд элСмСнтов. Но массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ, Ρ‡Π°Ρ‰Π΅ всСго Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ: Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… рядов, располоТСнных Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΎΠΌ. Π£ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π΄Π²Π° индСкса: ΠΎΠ΄ΠΈΠ½ опрСдСляСт ряд, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ элСмСнта Π² этом рядС. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ Π½Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΡƒΡŽ систСму ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

Иногда Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ «массив Π² массивС», Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… случаях для Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ способ описания β€” Ρ‚ΡƒΡ‚ всС зависит ΠΎΡ‚ языка, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.

Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈ структуры с большСй Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΡ€Π°ΠΉΠ½Π΅ Ρ€Π΅Π΄ΠΊΠΎ.

БтатичСскими ΠΈ динамичСскими. БтатичСский массив β€” классичСская рСализация этой структуры Π΄Π°Π½Π½Ρ‹Ρ…. Π£ Π½Π΅Π³ΠΎ фиксированноС количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ задаСтся ΠΏΡ€ΠΈ создании ΠΈ остаСтся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌ всС врСмя Π΅Π³ΠΎ сущСствования. Но это Π½Π΅ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ, поэтому ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ динамичСскиС массивы.

Π£ динамичСских массивов «гибкая» Π΄Π»ΠΈΠ½Π°, которая автоматичСски увСличиваСтся ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π² структуру Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ элСмСнт. Π­Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ экономит ΠΏΠ°ΠΌΡΡ‚ΡŒ: Π½Π΅ приходится Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ мноТСство «пустых» элСмСнтов, ΠΊΠ°ΠΊ Π² статичСском массивС, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ задСйствована Π½Π΅ вся Π΄Π»ΠΈΠ½Π°.

Π’Π½ΡƒΡ‚Ρ€ΠΈ динамичСскиС массивы Ρ‡Π°Ρ‰Π΅ всСго устроСны ΠΊΠ°ΠΊ статичСскиС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° измСняСтся Π΄Π»ΠΈΠ½Π°. ΠŸΡ€ΠΈ этом «шаг» пСрСсоздания β€” Π½Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт, Π° большС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π»ΠΈΠ½Π° увСличиваСтся сразу, скаТСм, Π½Π° ΠΏΡΡ‚ΡŒ элСмСнтов, Π° Π½Π΅ Π½Π° ΠΎΠ΄ΠΈΠ½. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ слишком ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ постоянными пСрСсозданиями массива.

ΠžΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΈ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹ΠΌΠΈ. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅ классичСский массив β€” ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Π½Π΅ΠΌ находятся элСмСнты Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Но Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ языки ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Π΅ массивы, Π³Π΄Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ€Π°Π·Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅ элСмСнты: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, число, ΠΏΠΎΡ‚ΠΎΠΌ строка, Π° ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Вакая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ, Π½ΠΎ с Π½Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½Π΅Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π² Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ риск ошибки со стороны программиста. НапримСр, ΠΎΠ½ попытаСтся ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ элСмСнты ΠΊΠ°ΠΊ числа, Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… окаТСтся строкой. Π’ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡Π½Π΅Ρ‚ вСсти сСбя нСпрСдсказуСмо.

Ассоциативными. АссоциативныС массивы β€” особый ΠΏΠΎΠ΄Π²ΠΈΠ΄ структуры Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ индСксы Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ упорядочСнными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами. Π­Ρ‚ΠΎ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Β«ΠΊΠ»ΡŽΡ‡ β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ β€” Π°Π½Π°Π»ΠΎΠ³ индСкса, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” Π°Π½Π°Π»ΠΎΠ³ элСмСнта.

Ассоциативный массив ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ: Π² Python, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΅Π³ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ словарСм. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡ β€” слово, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” Π΅Π³ΠΎ описаниС. Π’Ρ‚ΠΎΡ€ΠΎΠΉ наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½Ρ‹ΠΉ справочник, Π³Π΄Π΅ свСдСния ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «ЀИО β€” Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Β».

Часто ассоциативныС массивы Π±Ρ‹Π²Π°ΡŽΡ‚ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ динамичСскими, Π½ΠΎ это ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ зависит ΠΎΡ‚ языка программирования.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ Π½Π° массивы

Массив β€” Π½Π΅ СдинствСнная структура Π΄Π°Π½Π½Ρ‹Ρ…, хранящая нСсколько элСмСнтов. Π•Ρ‰Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΊΡƒΡ‡ΠΈ ΠΈ мноТСства, Π³Π΄Π΅ информация Π½Π΅ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π°, стСки, Π³Π΄Π΅ доступ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту, ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ β€” Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ послСднСму элСмСнту. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ связныС списки, Π³Ρ€Π°Ρ„Ρ‹ ΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΡ β€” Π² этих структурах Π΄Π°Π½Π½Ρ‹Ρ… элСмСнты особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ связаны ΠΌΠ΅ΠΆΠ΄Ρƒ собой ссылками.

ΠšΠ°ΠΊΡƒΡŽ ΠΈΠΌΠ΅Π½Π½ΠΎ структуру Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ для хранСния ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, зависит ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа, удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… большС Π½Π° курсах ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΡŽ ΠΈ ΡΡ‚Π°Π½ΡŒΡ‚Π΅ вострСбованным IT-спСциалистом.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² языкС программирования C

Вопросы для ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² языкС программирования C.
  • ΠšΠ°ΠΊΠΎΠ²Ρ‹ прСимущСства ΠΈ нСдостатки массивов Π² C.
  • МоТСм Π»ΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ индСксы массива Π² C, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΊΠΈ[-2].


Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² языкС программирования C

Массив Π² языкС программирования C прСдставляСт собой Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. Массив β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ряд ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π­Ρ‚ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΠ΅ элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏΠ° int, float, double, char ΠΈ Ρ‚. Π΄.

Π’Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎ массивах Π² C:

  • Массив β€” это Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….
  • ВсС элСмСнты массива хранятся Π² смСТных ячСйках памяти.
  • Π Π°Π·ΠΌΠ΅Ρ€ массива Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ постоянным Ρ†Π΅Π»Ρ‹ΠΌ числом.
  • Доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам Π² массивС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ массива ΠΈ Ρ†Π΅Π»ΠΎΠΌΡƒ числу, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΡƒΡŽ скобку, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса/индСкса, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, employeeSalary[5].
  • Массив β€” это структура Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ доступом. Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ элСмСнту массива всСго Π·Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ.
  • ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ индСкс 0, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ послСдний элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ индСкс (size_of_array — 1).

ΠšΠ°ΠΊΠΎΠ²Ρ‹ прСимущСства ΠΈ нСдостатки массивов Π² C

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ массивов Π² C

  • МСньшС ΠΊΠΎΠ΄Π° : Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ массив, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ N ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½Ρƒ структуру Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ N ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….
  • Π›Π΅Π³ΠΊΠΈΠΉ доступ ΠΊ элСмСнтам : ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ элСмСнту массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя ΠΈ индСкс массива. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСм элСмСнтам ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, итСрируя ΠΎΡ‚ индСкса 0 Π΄ΠΎ size-1, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ».
  • ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ : НСкоторыС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с использованиСм массива, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ поиск ΠΈ сортировка, поиск ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов.
  • ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ : ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ элСмСнтам массива с Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ O(1).

НСдостатки ΠΈΠ»ΠΈ ограничСния массивов Π² C

  • Массив являСтся статичСской структурой Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π²ΠΎ врСмя выполнСния.
  • ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Ρ‚ΡŒ, сколько элСмСнтов Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² массивС.
  • Π’ массивС ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ элСмСнты Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΌ массивС.
  • As Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива хранятся Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ячСйках памяти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вставка ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ ΠΈΠ»ΠΈ сзади соотвСтствСнно.
  • C Π½Π΅ выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ привязки индСкса массива. Π’ массивС ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ N Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для доступа ΠΊ элСмСнту N+5 th Π±Π΅Π· получСния ошибки. Когда ΠΌΡ‹ попытаСмся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам ΠΈΠ·-Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠ² массива, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ мусорноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.
  • ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ большиС массивы для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ любого Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ созданию Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов, Π³Π΄Π΅ большая Ρ‡Π°ΡΡ‚ΡŒ пространства Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

МоТСм Π»ΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ индСксы массива Π² C, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚ΠΊΠΈ[-2]

НСт, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ индСксы массива. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ индСксация массива начинаСтся с 0. N-ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ индСкс N-1.


БвязанныС Ρ‚Π΅ΠΌΡ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΊ массиву для GATE | Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² массив

Массив β€” ваТная Ρ‚Π΅ΠΌΠ°, относящаяся ΠΊ сСмСйству ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Π½Π°ΡƒΠΊ. И ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ конкурсного экзамСна, Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ GATE, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ пСрспСктиву массива. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли всС Ρ‚Π΅ΠΌΡ‹, относящиСся ΠΊ массиву. ΠœΡ‹ надССмся, Ρ‡Ρ‚ΠΎ примСчания ΠΊ Ρ‚Π΅ΠΌΠ°ΠΌ Π•Π“Π­ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ.

Π’Π΅ΠΌΠ° содСрТания

  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив?
  • ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ массива
  • Бинтаксис объявлСния массива
  • Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива
  • Ρ‚ΠΈΠΏΠΎΠ² массивов:
    • ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
    • ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
  • ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° массивов
  • НСдостатки массивов
  • Π’ΠΈΠ΄Π΅ΠΎ Π½Π° массивах
  • Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы, связанныС с массивами

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив?

Массив β€” это Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… элСмСнтов ΠΈΠ»ΠΈ элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, собранных Π² смСТных ячСйках памяти. ΠŸΡ€ΠΎΡ‰Π΅ говоря, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ массивы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Массив для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния:

Массив для значСния символа:

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ массива:

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны нСсколькими способами, Π² зависимости ΠΎΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… языков. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ поняли, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ языка Π‘ΠΈ. На рисункС Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ прСдставлСниС массива.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ всСгда хранят значСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

  • int β€” Ρ‚ΠΈΠΏ значСния Π΄Π°Π½Π½Ρ‹Ρ….
  • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, хранящиСся Π² массивС, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ элСмСнтами.
  • ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса.

Π’Π°ΠΆΠ½ΠΎ: Массив ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

  • Π’ массивС a ΠΌΡ‹ сохранили всС цСлочислСнныС значСния (ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Π΅)
  • Π’ массивС b ΠΌΡ‹ сохранили всС значСния char (ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°)
  • Π’ массивС c Π΅ΡΡ‚ΡŒ integer, float, char всС Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΈ это Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ массив ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, поэтому Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 3 Π½Π΅Π²Π΅Ρ€Π΅Π½, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ массив Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

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

Π’ΠΈΠΏ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π˜ΠΌΡΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ[ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ²];

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: Для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния

ΠΈΠ½Ρ‚ A[10];

Π—Π΄Π΅ΡΡŒ 10 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ этот массив A ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 10 Ρ†Π΅Π»Ρ‹Ρ… элСмСнтов.

2 5 8 44 21 11 7 9 3 1

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Для значСния символа

символов B[10];

Π­Ρ‚ΠΎΡ‚ массив B ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ 10 ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… элСмСнтов.

Ρ„ Π΄ ΠΈ Π± Π½ ΠΈ Π» с ΠΈ Π³

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива:

Если Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ описан массив, элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ мусорноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. И Ссли массив статичСский ΠΈΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ, Π΅Π³ΠΎ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄ΠΎ 0.

МоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты массива Π²ΠΎ врСмя объявлСния, ΠΈ для этого ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ синтаксис:

Бинтаксис: Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Имя_массива[Ρ€Π°Π·ΠΌΠ΅Ρ€] = { Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅1, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅2, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅3, ….. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅N };

Π’ΠΈΠΏΡ‹ массивов:

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° массивов:

  • ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
  • ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив являСтся Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ массива. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ подписки. [] (скобки) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса массива, Π° Ρ‚Π°ΠΊΠΆΠ΅ для объявлСния ΠΈ доступа ΠΊ элСмСнтам массива.

Бинтаксис: DataType ArrayName [size];

НапримСр: int a[10];

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Π’ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах Ρƒ нас Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
  • Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы
    1. 1. Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Массив, содСрТащий Π΄Π²Π° Π½ΠΈΠΆΠ½ΠΈΡ… индСкса [] [], называСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом. Они Ρ‚Π°ΠΊΠΆΠ΅ извСстны ΠΊΠ°ΠΊ массив массива. Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы дСлятся Π½Π° строки ΠΈ столбцы ΠΈ способны ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Бинтаксис: DataType ArrayName[row_size][column_size];

НапримСр: int arr[5][5];

    2. Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Когда Π½Π°ΠΌ трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²Π΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ элСмСнтов для объявлСния элСмСнтов массива, Ρ‚ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

Бинтаксис: DataType ArrayName[size1][size2][size3];

НапримСр: int a[5][5][5];

ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅, Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° массива

  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.
  • Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ количСство элСмСнтов Π² Π½Π΅ΠΌ.
  • ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ бСзопасноС располоТСниС кэша, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.
  • ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ нСсколько элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° с использованиСм ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

НСдостатки массива:

  • Π’ массивС Π²Π°ΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство сохраняСмых элСмСнтов.
  • Π­Ρ‚ΠΎ статичСская конструкция. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² массивС Ρ€Π°Π·ΠΌΠ΅Ρ€ памяти фиксирован.
  • Когда Π΄Π΅Π»ΠΎ Π΄ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎ вставки ΠΈ удалСния, это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ элСмСнты хранятся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° опСрация сдвига стоит Π΄ΠΎΡ€ΠΎΠ³ΠΎ.

Π’ΠΈΠ΄Π΅ΠΎ Π½Π° массивах

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Π·Π°Π΄Π°Ρ‡Π° β€” Массив

Π’. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° P считываСт 500 Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ [0, 100], ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ядра 500 учащихся. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ частоту ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π°Π»Π»Π° Π²Ρ‹ΡˆΠ΅ 50. Как Π»ΡƒΡ‡ΡˆΠ΅ всСго Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ частоты Π² P?

  1. Массив ΠΈΠ· 50 чисСл
  2. Массив ΠΈΠ· 100 чисСл
  3. Массив ΠΈΠ· 500 чисСл
  4. ДинамичСски выдСляСмый массив ΠΈΠ· 550 Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ²

Q. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ C, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… size β€” это количСство элСмСнтов Π² массивС E:

int MyX(int *E, Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ цСлочислСнный Ρ€Π°Π·ΠΌΠ΅Ρ€){

ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Y = 0;

ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Z;

ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» i,j,k;

для (я = 0; я < Ρ€Π°Π·ΠΌΠ΅Ρ€; я ++)

Y = Y + E[i];

для (я = 0; я < Ρ€Π°Π·ΠΌΠ΅Ρ€; я ++)

для (j = i; j <Ρ€Π°Π·ΠΌΠ΅Ρ€; j++) {

Z = 0;

для (k = i; k <= j; k++)

Z = Z + E[k];

Ссли (Z > Y)

Y = Π₯;

}

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Y;

}

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ MyX, Ρ€Π°Π²Π½ΠΎ

.
  1. Максимально возмоТная сумма элСмСнтов Π² любом подмассивС массива E.
  2. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт Π² любом подмассивС массива E.
  3. Π‘ΡƒΠΌΠΌΠ° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π²ΠΎ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… подмассивах массива E.
  4. Π‘ΡƒΠΌΠΌΠ° всСх элСмСнтов массива E.

Часто Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ вопросы

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²?

Массив β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….

Π’ΠΈΠΏΡ‹ массивов?

БущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° массива:

  • Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.
  • ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

Как ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы?

Бинтаксис: DataType ArrayName[row_size][column_size];
НапримСр, int arr[5][5];

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡ‚Π΅ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΈ слСдитС Π·Π° обновлСниями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ послСдниС обновлСния ΠΎΠ± экзамСнС GATE, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ критСриях приСмлСмости GATE, GATE 2023, допускной ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ΅ GATE, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ GATE для CSE (ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ инТСнСрия), примСчаниях GATE CSE, опросном листС GATE CSE ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠΌ.
ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *