Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² 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++ β†’.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² C

Массив β€” это Π³Ρ€ΡƒΠΏΠΏΠ° ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π’Π½ΡƒΡ‚Ρ€ΠΈ программирования Π½Π° C массивы Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ int, char, double, float ΠΈ Ρ‚.Π΄. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, структуры ΠΈ Ρ‚.Π΄. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ студСнта Π·Π° ΡˆΠ΅ΡΡ‚ΡŒ курсов, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для ΠΎΡ†Π΅Π½ΠΎΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ Π² областях ΠΎΠ±Ρ‰Π΅ΠΉ памяти. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнты, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ массив. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ элСмСнты массива, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΅Ρ‰Π΅ нСсколько строк сцСнария C. Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ массивов Π½Π° языкС C. ΠŸΡ€ΠΈ написании этого руководства ΠΌΡ‹ использовали Ubuntu 20.

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

  1. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1
  2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2
  3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3
  4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4
  5. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5
  6. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1

НачнСм с открытия ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π²Β ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС UbuntuΒ 20.04. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Β«Ctrl + Alt + TΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ консоль ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Π²Β Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 5 сСкунд. НачнСм с создания Ρ„Π°ΠΉΠ»Π° на языкС C, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ «сСнсорный» запрос, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π΅Π³ΠΎ Π²Β ΠΊΠ°ΠΊΠΎΠΌ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΒ Π½Π΅ΠΌΡƒ ΠΊΠΎΠ΄. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ Β«Π½Π°Π½ΠΎΒ» запрос, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ» Π²Β GNU.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„Π°ΠΉΠ» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π²Β Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ GNU; ΠΏΡ€ΠΈΡˆΠ»ΠΎ врСмя Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ на языкС C для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ массивов. Π‘Ρ‹Π»ΠΎΒ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли бы вы осознали, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы объявлСния массива ΠΈΒ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. В этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ мы обсудим ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ и самый простой способ объявлСния ΠΈΒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива на языкС C.Β Π˜Ρ‚Π°ΠΊ, сначала Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. ПослС этого запускаСм Π²Β ΠΊΠΎΠ΄Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠœΡ‹Β ΡƒΡ‚Π²Π΅Ρ€Π΄ΠΈΠ»ΠΈ массив Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ 5. ПослС этого ΠΌΡ‹Β Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ значСния в массив ΠΏΠΎΒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ индСксу ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. ПослС этого ΠΌΡ‹Β ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π»ΠΈ Ρ†ΠΈΠΊΠ» for, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ всС 5 элСмСнтов массива arr Π²Β ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅. Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ из самых простых способов Π·Π°ΡΠ²ΠΈΡ‚ΡŒ ΠΈΒ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ массив. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ свой ΠΊΠΎΠ΄ ΠΈΒ Π²Ρ‹ΠΉΠ΄ΠΈΡ‚Π΅ ΠΈΠ·Β Π½Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Β«Ctrl + SΒ» ΠΈΒ Β«Ctrl + XΒ» ΠΎΠ΄ΠΈΠ½ Π·Π°Β Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„Π°ΠΉΠ» сохранСн, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ исполняСмым Ρ„Π°ΠΉΠ»ΠΎΠΌ. Π˜Ρ‚Π°ΠΊ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ c ++ Β«gccΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ просто запустим Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ массива на языкС C.Β ΠœΡ‹Β Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ в консоли ΠΈΒ Π½Π°ΠΆΠ°Ρ‚ΡŒ Π½Π°Β ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«EnterΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это. На выходС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ всС 5Β Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива ΠΎΠ΄Π½ΠΎ Π·Π°Β Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π°Β Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр для объявлСния ΠΈΒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива на этот Ρ€Π°Π· Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Β«test.cΒ» снова.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ„Π°ΠΉΠ» Π±Ρ‹Π» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π²Β Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, сначала Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Основная функция использовалась Ρ‚Π°ΠΊΒ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅. В этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹Β ΠΎΠ±ΡŠΡΠ²ΠΈΠ»ΠΈ Π΄Π²Π° массива Β«Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉΒ» ΠΈΒ Β«Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉΒ» для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… ΠΈΒ Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ в массивах. Массив Β«oddΒ» Π½Π΅Β ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΒ ΠΈΠΌΠ΅Π΅Ρ‚ 5 элСмСнтов, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ значСниями. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ сообщСниС ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒΡŽ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… элСмСнтов. Π¦ΠΈΠΊΠ» For ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для сбора Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ из индСкса массива Β«oddΒ» ΠΈΒ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΏΠΎΒ ΠΎΠ΄Π½ΠΎΠΌΡƒ. Массив Β«evenΒ» содСрТит 5Β Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… чисСл ΠΈΒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ 5. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Β«forΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ числа. Π—Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ» for Π±Ρ‹Π» использован для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ‚Π½Ρ‹Ρ… массивов ΠΎΠ΄Π½ΠΎ Π·Π°Β Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» Β«test.cΒ» Π΅Ρ‰Π΅ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ дальшС.

ПослС компиляции ΠΊΠΎΠ΄Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π°Β Π½ΠΈΠΆΠ½Π΅ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠ½Β Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты массива, Π·Π°Ρ‚Π΅ΠΌ Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты массива и простыС тСкстовыС сообщСния ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠ±ΠΎΠΈΠΌΠΈ массивами.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π°Β ΠΏΡ€ΠΈΠΌΠ΅Ρ€ массива, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ·Β ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, Π°Β Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ эти значСния Π²Β Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅. Π˜Ρ‚Π°ΠΊ, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ‚ΠΎΡ‚Β ΠΆΠ΅ Ρ„Π°ΠΉΠ» Π΅Ρ‰Π΅ Ρ€Π°Π·.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„Π°ΠΉΠ» ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ Π²Β Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ GNU nano. ΠœΡ‹Β Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π²Β Π½Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ сцСнарий C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ стандартного Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° и основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹Β ΠΎΠ±ΡŠΡΠ²ΠΈΠ»ΠΈ массив Β«storeΒ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 7. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ print использовался для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ сообщСния для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π¦ΠΈΠΊΠ» Β«forΒ» использовался для сбора и добавлСния Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ в массив Β«storeΒ» ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ &Β sign Π²Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ scanf. ПослС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π° Β«forΒ» Π±Ρ‹Π»ΠΎ распСчатано Π΄Ρ€ΡƒΠ³ΠΎΠ΅ сообщСниС на дисплСС. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ†ΠΈΠΊΠ» Β«forΒ» использовался для отобраТСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массива на экранС ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«printfΒ». Ѐункция main закрываСтся Ρ„Ρ€Π°Π·ΠΎΠΉ return 0. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ этот ΠΊΠΎΠ΄ ΠΈΒ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚Π΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ запрос Β«gccΒ» для компиляции этого ΠΊΠΎΠ΄Π°.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Π±Ρ‹Π» скомпилирован, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ запрос, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»Ρ попросили ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ значСния цСлочислСнного Ρ‚ΠΈΠΏΠ°. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹Β Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ 7Β Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΒ Π½Π°ΠΆΠ°Π»ΠΈ Enter. ПослС сообщСния на дисплСС всС значСния, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π±ΡƒΠ΄ΡƒΡ‚ сохранСны в массивС, Π°Β Π·Π°Ρ‚Π΅ΠΌ распСчатаны.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 4

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ вычислСния суммы и срСднСго значСния по содСрТимому массива. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» C.

ПослС открытия Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Β Π½Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠΉΒ ΠΆΠ΅ ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅. Π‘Π½ΠΎΠ²Π° мы сначала использовали ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒΒ C ΠΈΒ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Β«ArrΒ» 10. Π”Π²Π΅ цСлочислСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: sum ΠΈΒ avg Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ для подсчСта ΠΎΠ±Ρ‰Π΅Π³ΠΎ и срСднСго Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ по элСмСнтам массива. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ значСния. Π¦ΠΈΠΊΠ» Β«forΒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для добавлСния Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ в массив Β«ArrΒ» ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° scanf. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, всС значСния, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π±ΡƒΠ΄ΡƒΡ‚ суммированы и сохранСны Π²Β ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «сумма». ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ эта сумма отобразится, а послС расчСта Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ свой ΠΊΠΎΠ΄.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½ΠΈΠΆΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 5

На этой ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ мы обсудим, ΠΊΠ°ΠΊ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив. Для этого ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ».

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ цСлочислСнная пСрСмСнная Β«tempΒ» и массив Β«ArrΒ» Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 10. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Β«forΒ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ порядка массива. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈΒ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Ρ†ΠΈΠΊΠ»Ρ‹ for использовались для сортировки ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ массива в порядкС возрастания с использованиСм Π·Π°ΠΌΠ΅Π½Ρ‹. Если ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ содСрТит условиС, Ρ‡Ρ‚ΠΎ Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса Β«i + 1Β» большС значСния индСкса, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ индСкса Β«IΒ» ΠΊΒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ temp. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ значСния индСкса Β«i + 1Β» к индСксу Β«IΒ». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ temp к индСксу Β«i + 1Β». Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» for ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ отсортированного массива.

Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ».

Π’Β Π²Ρ‹Π²ΠΎΠ΄Π΅ Π½ΠΈΠΆΠ΅ сначала ΠΏΠΎΠΊΠ°Π·Π°Π½ нСсортированный массив; Π·Π°Ρ‚Π΅ΠΌ массив Π±Ρ‹Π» отсортирован ΠΈΒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² языкС программирования 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.


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

Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ структурой Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C

12 фСвраля 2019 Π³.

ΠΎΡ‚ Lithmee

Π§Ρ‚Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· 4 ΠΌΠΈΠ½.

ОсновноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ структурой Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ массив ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ структура ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅.

C β€” это высокоуровнСвый язык программирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ ДСннисом Π ΠΈΡ‚Ρ‡ΠΈ Π² Bell Labs. Π­Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ язык для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных языков программирования, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ C++, Java, Python ΠΈ PHP. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы, встроСнныС систСмы, сСтСвыС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚. Π΄. β€” Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ с использованиСм языка C. Массив ΠΈ структура β€” Π΄Π²Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ программирования Π² языкС C. Π’ Ρ†Π΅Π»ΠΎΠΌ, элСмСнты Π² массивС ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ элСмСнты Π² структурС ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ….

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ области, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅

1. Π§Ρ‚ΠΎ прСдставляСт собой массив Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ C
— ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
2. Π§Ρ‚ΠΎ являСтся структурой Π² C -ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ
— ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ
3. Как Ρ€Π°Π·Π½ΠΈΡ†Π°. ΠœΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ структурой Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C
nofollow Β  Β   – Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹

Массив, структура, C, C++

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ массив Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C

Массив β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, способная Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ элСмСнты, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ‚ΠΈΠΏΡƒ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ массив. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, массив ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.

Ρ†Π΅Π»Ρ‹Π΅ числа [10];

ΠŸΡ€ΠΈ этом массив Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 10 элСмСнтов. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива начинаСтся с Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ индСкса. ИндСкс послСднСго элСмСнта Ρ€Π°Π²Π΅Π½ 9. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, всС элСмСнты хранятся Π² Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠΉ области памяти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти для массива являСтся статичСским.

Рис. 1: ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C с массивами

Π’Ρ‹ΡˆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° простая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C. ΠœΠ΅Ρ‚ΠΊΠΈ β€” это массив. Он ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡΡ‚ΡŒ цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ массив ΠΏΡΡ‚ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ. Π¦ΠΈΠΊΠ» for ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массив. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ Β«iΒ» начинаСтся с 0 ΠΈ увСличиваСтся Π΄ΠΎ 4. Она ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΠΈ Π² массивС. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Ρ€Π°Π²Π΅Π½ 75, Π° послСдний элСмСнт Ρ€Π°Π²Π΅Π½ 66.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ структура Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° β€” это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ пСрСмСнная, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, это Π½Π°Π±ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ.

Рисунок 2: ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C со структурой

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ студСнт являСтся структурой. Он содСрТит Π΄Π²Π° свойства: id (int) ΠΈ name (char). Π’ основном ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ s1 являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ структурного Ρ‚ΠΈΠΏΠ°. Π’ строкС 13 Π½ΠΎΠΌΠ΅Ρ€ 1 присваиваСтся свойству id структуры. Ѐункция strcpy позволяСт ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Β«AnnΒ» Π² свойство name структуры. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ свойствам структуры с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° доступа (.). НаконСц, функция printf ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈ имя Π½Π° консоли.

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ структурой Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

Массив β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, состоящая ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… идСнтифицируСтся индСксом массива, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ структура β€” это Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ячСйкС памяти. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, это основноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ структурой Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Массив Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½Π°Π±ΠΎΡ€ элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² смСТных ячСйках памяти, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ структура Ρ…Ρ€Π°Π½ΠΈΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅.

Доступ

Доступ ΠΊ элСмСнту массива Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ индСкса. Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ свойству структуры, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ имя структуры ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, это Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ структурой Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C.

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова для объявлСния массива, Π½ΠΎ программист ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово Β«structΒ» для объявлСния структуры.

Π Π°Π·ΠΌΠ΅Ρ€ элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ массивом ΠΈ структурой Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² массивС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнтов Π² структурС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ.

Доступ ΠΊ элСмСнтам ΠΈ поиск ΠΏΠΎ Π½ΠΈΠΌ

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, структурС трСбуСтся большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для доступа ΠΈ поиска элСмСнтов ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с массивом.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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