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

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

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 5 июня 2021 Π² 17:57

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ массивы! Массив массивов называСтся ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом.

int array[3][5]; // 3-элСмСнтный массив ΠΈΠ· 5-элСмСнтных массивов

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ здСсь Ρƒ нас Π΅ΡΡ‚ΡŒ 2 индСкса, это Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Π’ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ (Π»Π΅Π²Ρ‹ΠΉ) индСкс ΠΊΠ°ΠΊ строку, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ (ΠΏΡ€Π°Π²Ρ‹ΠΉ) индСкс ΠΊΠ°ΠΊ столбСц. Π­Ρ‚ΠΎ называСтся строковым порядком. ΠšΠΎΠ½Ρ†Π΅ΠΏΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ прСдставлСнный Π²Ρ‹ΡˆΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ структуру:

[0][0]  [0][1]  [0][2]  [0][3]  [0][4] // строка 0
[1][0]  [1][1]  [1][2]  [1][3]  [1][4] // строка 1
[2][0]  [2][1]  [2][2]  [2][3]  [2][4] // строка 2

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π²Π° индСкса:

array[2][3] = 7;

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ чисСл прСдставляСт собой строку:

int array[3][5]
{
  {  1,  2,  3,  4,  5 }, // строка 0
  {  6,  7,  8,  9, 10 }, // строка 1
  { 11, 12, 13, 14, 15 }  // строка 2
};

Π₯отя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ компиляторы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΌΡ‹ Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΡ… Π² любом случаС, ΠΊΠ°ΠΊ для удобства чтСния, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ C++ замСняСт ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π½Π° 0.

int array[3][5]
{
  {  1,  2 },        // строка 0 = 1, 2, 0, 0, 0
  {  6,  7, 8 },     // строка 1 = 6, 7, 8, 0, 0
  { 11, 12, 13, 14 } // строка 2 = 11, 12, 13, 14, 0
};

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы со списками ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ (Ρ‚ΠΎΠ»ΡŒΠΊΠΎ) ΠΊΡ€Π°ΠΉΠ½ΡŽΡŽ Π»Π΅Π²ΡƒΡŽ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π΄Π»ΠΈΠ½Ρ‹:

int array[][5]
{
  {  1,  2,  3,  4,  5 },
  {  6,  7,  8,  9, 10 },
  { 11, 12, 13, 14, 15 }
};

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, Ρ‡Π΅ΠΌΡƒ Ρ€Π°Π²Π½Π° Π΄Π»ΠΈΠ½Π° массива. Однако ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π½Π΅ допускаСтся:

int array[][] 
{
  { 1, 2, 3, 4 },
  { 5, 6, 7, 8 }
};

Как ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ массивы, ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0 ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

int array[3][5]{};

Доступ ΠΊ элСмСнтам Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС

Для доступа ΠΊΠΎ всСм элСмСнтам Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π°: ΠΎΠ΄ΠΈΠ½ для строки ΠΈ ΠΎΠ΄ΠΈΠ½ для столбца. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ доступ Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ осущСствляСтся построчно, индСкс строки ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС внСшнСго Ρ†ΠΈΠΊΠ»Π°.

for (int row{ 0 }; row < numRows; ++row) // ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ строкам Π² массивС
{
    for (int col{ 0 }; col < numCols; ++col) // ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π² строкС
    {
        std::cout << array[row][col];
    }
}

Π’ C++11 Ρ†ΠΈΠΊΠ»Ρ‹ for-each Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. Π¦ΠΈΠΊΠ» for-each ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим ΠΏΠΎΠ·ΠΆΠ΅.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы большС Π΄Π²ΡƒΡ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ большС Π΄Π²ΡƒΡ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. Π’ΠΎΡ‚ объявлСниС Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

int array[5][4][3];

Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы слоТно ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятным способом с использованиСм списков ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², поэтому ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0, Π° Π·Π°Ρ‚Π΅ΠΌ явно ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ².

Доступ ΠΊ элСмСнту Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ:

std::cout << array[3][1][2];

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° практичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

#include <iostream>
 
int main()
{
    constexpr int numRows{ 10 };
    constexpr int numCols{ 10 };
 
    // ОбъявлСниС массива 10x10
    int product[numRows][numCols]{};
 
    // РассчитываСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ умноТСния
    for (int row{ 1 }; row < numRows; ++row)
    {
        for (int col{ 1 }; col < numCols; ++col)
        {
            product[row][col] = row * col;
        }
     }
 
    // РаспСчатываСм Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ
    for (int row{ 1 }; row < numRows; ++row)
    {
        for (int col{ 1 }; col < numCols; ++col)
        {
            std::cout << product[row][col] << '\t';
        }
 
        std::cout << '\n';
    }
 
    return 0;
}

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° вычисляСт ΠΈ распСчатываСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ умноТСния для всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΡ‚ 1 Π΄ΠΎ 9 (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ†ΠΈΠΊΠ»Ρ‹ for Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 1 вмСсто 0. Π­Ρ‚ΠΎ позволяСт Π½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ столбСц 0 ΠΈ строку 0, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ просто Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π½ΡƒΠ»Π΅ΠΉ! Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

1    2    3    4    5    6    7    8    9
2    4    6    8    10   12   14   16   18
3    6    9    12   15   18   21   24   27
4    8    12   16   20   24   28   32   36
5    10   15   20   25   30   35   40   45
6    12   18   24   30   36   42   48   54
7    14   21   28   35   42   49   56   63
8    16   24   32   40   48   56   64   72
9    18   27   36   45   54   63   72   81

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΈΠ³Ρ€Π°Ρ… с Ρ‚Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ (ΠΏΠ»ΠΈΡ‚ΠΎΡ‡Π½ΠΎΠΉ) Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΉ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива прСдставляСт ΠΎΠ΄ΠΈΠ½ Ρ‚Π°ΠΉΠ». Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ (Π² качСствС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†) для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ отраТСния Ρ„ΠΈΠ³ΡƒΡ€.

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΡΡ‚Π°Ρ‚ΡŒΠΈ:

  • 9.5 β€” Multidimensional Arrays

Π’Π΅Π³ΠΈ

C++ / CppLearnCppДля Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΠœΠ°ΡΡΠΈΠ²ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Назад

ОглавлСниС

Π’ΠΏΠ΅Ρ€Π΅Π΄

Π£Ρ€ΠΎΠΊ #6: Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

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

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто Π½Π°ΠΌ приходится ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ массива. Массив прСдставляСт собой ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ имя. ΠžΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этим элСмСнтам ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ индСксации, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всС эти элСмСнты Π² памяти располоТСны ΠΏΠΎ порядку. Массив ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊ: int arr[10]. Π—Π΄Π΅ΡΡŒ int — Ρ‚ΠΈΠΏ элСмСнтов массива, arr — Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π° Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобочках — количСство Π΅Π³ΠΎ элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ задаСтся ΠΈΠ»ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² пСрСчисляСмого Ρ‚ΠΈΠΏΠ°, ΠΈΠ»ΠΈ константой. Но стоит ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² C++ индСксация массива начинаСтся с нуля, поэтому Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ 10 элСмСнтов, ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ адрСс 0, Π° дСсятый — 9. ΠžΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ этим элСмСнтам ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок:

arr[4]. ΠŸΡ€ΠΈ этом Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ доступ ΠΊ пятому элСмСнту, Π° Π½Π΅ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌΡƒ (Π½Π΅ Π½Π°Π΄ΠΎ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ ΠΎ индСксации с нуля). Для закрСплСния Π·Π½Π°Π½ΠΈΠΉ напишСм Ρ‚Π°ΠΊΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

#include <iostream>
using namespace std;
int main() {
    int arr[10], n;
    for (int i = 0; i > n;
        if ((n >= 0) && (n 

Как ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, if Π² Π΄Π°Π½Π½ΠΎΠΌ случаС прСдостСрСгаСт нас ΠΎΡ‚ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ массива.

C++ Π½Π΅ слСдит Π·Π° этим, поэтому вся ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° Π½Π° программиста. Если ΠΆΠ΅ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ этот if ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту с индСксами 10, 11 ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ 20, Ρ‚ΠΎ Π² консоли ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ мусор, ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ попытаСмся Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ процСсса ΠΈ наша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Иногда приходится Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠ΅ «ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ». НапримСр, Ρ‚Π°Π±Π»ΠΈΡ†Π° умноТСния. Для Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ умноТСния Π΄ΠΎ 12 Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом 12*12. ΠžΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΎΠ½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: int arr[12][12]. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ сами Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ умноТСния Π² массивС. Π‘Ρ€Π°Π·Ρƒ ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π°: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ i ΠΎΡ‚ 0 Π΄ΠΎ 11, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ j с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ячСйкС массива с индСксами (i; j) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (i + 1) * (j + 1), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нумСрация начинаСтся с нуля ΠΈ Π±Π΅Π· увСличСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° 1, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π±Ρ‹ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ столбцС ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС нашСго Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΎΠ΄Π½ΠΈ Π½ΡƒΠ»ΠΈ.

Если Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π΅ получаСтся, заглянитС Π² Π±Π»ΠΎΠΊ Π½ΠΈΠΆΠ΅.

#include <iostream>
using namespace std;
int main() {
    int arr[12][12];
    for (int i = 0; i 

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

Массивам, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ объявлСнии. ДСлаСтся это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок: int arr[3] = {2, 4, 8}. Π’Π°ΠΊ ΠΆΠ΅, согласно стандарту C++11, Π·Π½Π°ΠΊ = ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈ этом Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ измСнится, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΡ€ΠΌΠ° записи потСряла ΠΎΠ΄ΠΈΠ½ Π·Π½Π°ΠΊ. Если ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массив ΠΈ сразу ΠΆΠ΅ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ элСмСнтам Π½Π΅ΠΊΠΈΠ΅ значСния, количСство Π΅Π³ΠΎ элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ: int arr[] {2, 4, 8}. Π­Ρ‚ΠΎ довольно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° создаСтся массив с Π½Π΅ΠΊΠΎΠΉ числовой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ сколько ΠΈΠΌΠ΅Π½Π½ΠΎ элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ массив. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ объявлСнии массива, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ C++ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ компиляции Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π±Ρ‹Π» извСстСн. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивам. ΠŸΡ€ΠΈ этом ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡ… Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив массивов, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊ: int arr[][] {{1, 2, 3}, {4, 5, 6}}.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ вопросы ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅:

Вопросов Π΅Ρ‰Π΅ Π½Π΅Ρ‚

ДобавляйтС свои вопросы Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ. Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² ΡΡ‚Π°Ρ‚ΡŒΡŽ πŸ™‚

Π£Ρ€ΠΎΠΊ #5Π£Ρ€ΠΎΠΊ #7

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

ΠžΠ±Π·ΠΎΡ€

Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива относится ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ элСмСнты массива ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Массив с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ извСстСн ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Массив, Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ большС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, называСтся ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом.

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

Scope

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивам. ΠœΡ‹ научимся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом Π² C. ΠœΡ‹ рассмотрим ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами.

Массив ΠΈ Π΅Π³ΠΎ Ρ‚ΠΈΠΏΡ‹

Массив β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащая Π½Π°Π±ΠΎΡ€ элСмСнтов сходных Ρ‚ΠΈΠΏΠΎΠ², хранящихся Π² смСТных ячСйках памяти.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ЦСлочислСнный массив прСдставляСт собой Π½Π°Π±ΠΎΡ€ Ρ†Π΅Π»Ρ‹Ρ… чисСл.

Π’ языкС C массивы дСлятся Π½Π° Π΄Π²Π° Ρ‚ΠΈΠΏΠ°:

  • ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.
  • ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. — Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π½Π° C.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ углубимся Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ‚ΠΈΠΏ массива.

Π Π°Π·ΠΌΠ΅Ρ€ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π² C

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ нашСго массива, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ понадобится Π½Π°ΠΌ для вычислСния пространствСнной слоТности, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ количСства элСмСнтов Π² нашСм массивС.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:


ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ†Π΅Π»Ρ‹Ρ… чисСл A[10][20][30]. Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ массива являСтся ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, Ρ‚.Π΅. 10 * 20 * 30 = 6000 элСмСнтов.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² C

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив массивов ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· строк ΠΈ столбцов.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

1 7 2
9 3 8

Π­Ρ‚ΠΎΡ‚ массив ΠΈΠΌΠ΅Π΅Ρ‚ 222 строки ΠΈ 333 столбца.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² C Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ индСксации с отсчСтом ΠΎΡ‚ нуля, ΠΊΠ°ΠΊ ΠΈ всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы Π² C.

Бинтаксис:
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ рассмотрим синтаксис объявлСния Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² C.

Π—Π΄Π΅ΡΡŒ i ΠΈ j β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΡƒΡ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, Ρ‚. Π΅. i ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ количСство строк, Π° j β€” количСство столбцов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ объявляСм Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π½Π° C с ΠΈΠΌΠ΅Π½Π΅ΠΌ A, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ 10 строк ΠΈ 20 столбцов.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² C

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² C Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… способов:

ΠœΠ΅Ρ‚ΠΎΠ΄ 1 ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ синтаксис для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² C. C Ρ€Π°Π·ΠΌΠ΅Ρ€Π° x * y Π±Π΅Π· использования ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок.

Π­Ρ‚ΠΎ создаст массив Ρ€Π°Π·ΠΌΠ΅Ρ€Π° x * y с элСмСнтами, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ y элСмСнтов Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС. y + 1 ΠΈ Π΄Π°Π»Π΅Π΅, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ y элСмСнтов Π² порядкС слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, всС строки x Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΎΠ΄Π½Π° Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с этим Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π˜Ρ‚Π°ΠΊ, Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2 * 3 с ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ элСмСнты:

  • Π‘Π»Π΅Π²Π° Π½Π°ΠΏΡ€Π°Π²ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ элСмСнта Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС.
  • Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ Π΄ΠΎ послСднСго элСмСнт Π² порядкС слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС.

Бпособ 2
Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² C Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈ столбца.

Бинтаксис ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ: столбцы Π² нашСм массивС 2d. 9{th}(jβˆ’1)th позиция.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (i, j), ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ array_name[i — 1][j — 1]. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, элСмСнт Π² 4-ΠΉ строкС ΠΈ 5-ΠΌ столбцС Π±ΡƒΠ΄Π΅Ρ‚ доступСн A[3][4].

Как ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив?

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку ΠΈ столбСц ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ индСкс ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π²Π΅ ΠΏΠ΅Ρ‚Π»ΠΈ. Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ 0 Π΄ΠΎ количСства строк — 1. Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ столбСц, поэтому ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ 0 Π΄ΠΎ количСства столбцов — 1.

НапримСр, β€” ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ массив A ΠΈΠ· m строк ΠΈ n столбцов. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² наш массив A ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ для i = 0 Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΡ‚ j = 0 Π΄ΠΎ j = n — 1. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, для 0-ΠΉ строки ΠΎΠ½ Π·Π°ΠΉΠΌΠ΅Ρ‚ n элСмСнтов ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π­Ρ‚ΠΎΡ‚ процСсс Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ для Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки (i = 1), Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΉ строки ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

Π’ C, Π² случаС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, ΠΎΠ΄ΠΈΠ½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ вСсь массив.

НапримСр:

Π’Ρ‹Π²ΠΎΠ΄:

ОбъяснСниС: Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля ΠΌΡ‹ обошли вСсь массив.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π½Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. ΠœΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° вСсь ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π˜Ρ‚Π°ΠΊ, всС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки/столбца Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

Π’Ρ‹Π²ΠΎΠ΄:

ОбъяснСниС: Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ использовали ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΈ всю строку, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π±Ρ‹Π» ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½ вСсь Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. 9{th}0-ΠΉ элСмСнт i-ΠΉ строки, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ собой ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ 2-ΠΌΡƒ элСмСнту 2-ΠΉ строки ΠΎΠ±Ρ€. *(arr + 1) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку массива. *(arr + 1) + 0 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 1-ΠΉ элСмСнт 2-ΠΉ строки массива. *(arr + 1) + 1 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 2-ΠΉ элСмСнт 2-ΠΉ строки массива. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ этого элСмСнта: *(*(ΠΏΡ€ΠΈΠ± + i) + j)

Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ΄ C для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта этого массива:

Π’Ρ‹Π²ΠΎΠ΄:

ОбъяснСниС:
Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π² i-ΠΉ строкС ΠΈ j-ΠΌ столбцС массива Ρ€Π°Π²Π΅Π½ *(*(arr + i) + ΠΊ). Π’ этом ΠΊΠΎΠ΄Π΅ сначала ΠΌΡ‹ объявляСм ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ массив, послС Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ 2D-массив, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ 2 Ρ†ΠΈΠΊΠ»Π°, ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ *(*(arr + i) + j). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, пСчатаСтся вСсь 2D-массив.

Π’Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² C

Как слСдуСт ΠΈΠ· названия, Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив содСрТит Ρ‚Ρ€ΠΈ измСрСния, поэтому Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ массив Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. Π’Ρ€ΠΈ измСрСния сформулированы ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • Π Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° (k)
  • Ряд (i)
  • Колонка (j)

Бинтаксис
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π­Ρ‚ΠΎ синтаксис для объявлСния Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

Π—Π΄Π΅ΡΡŒ i, j ΠΈ k β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚Ρ€Π΅Ρ… ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ, Π³Π΄Π΅ i β€” количСство Π±Π»ΠΎΠΊΠΎΠ² (2d массивов), j β€” количСство строк ΠΈ k β€” количСство столбцов.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ (для Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива символов):

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² C

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок, Π»ΠΈΠ±ΠΎ ΠΏΡƒΡ‚Π΅ΠΌ упоминания элСмСнтов Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ скобки.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ скобки:

ОбъяснСниС:
Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ количСство элСмСнтов зависят ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρƒ нас Π΅ΡΡ‚ΡŒ 2 Π±Π»ΠΎΠΊΠ°, количСство самых Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… скобок Ρ€Π°Π²Π½ΠΎ 2. Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· самых Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… скобок Ρƒ нас Π΅ΡΡ‚ΡŒ 3 Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… скобки, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ количСство строк Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Ρ€Π°Π²Π½ΠΎ 3. Π’Π½ΡƒΡ‚Ρ€ΠΈ самых Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок Ρƒ нас Π΅ΡΡ‚ΡŒ 4 элСмСнта ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ , ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ нашСго столбца Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Ρ€Π°Π²Π΅Π½ 4.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим, ΠΊΠ°ΠΊ это выглядит Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ Π½ΠΈΠΆΠ΅:

Доступ ΠΊ элСмСнтам Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² C

Доступ ΠΊ элСмСнтам Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ это дСлаСтся для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅ индСксированиС с отсчСтом ΠΎΡ‚ нуля.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΌ Π΄Π°Π½ Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ всСм элСмСнтам массива ΠΈ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ΠΈΡ…. Код для этого:

Π’Ρ‹Π²ΠΎΠ΄:

ОбъяснСниС:
ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ 3 Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° для ΠΎΠ±Ρ…ΠΎΠ΄Π° всСго массива ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° элСмСнтов ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

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

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

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π½Π° языкС C β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ встроСнной систСмы с использованиСм ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° UML

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π½Π° языкС C. Π²Ρ‹ считаСтС Π±Π°Π»Π»ΠΎΠ² uint8_t[3] = {10, 20, 30}; Β  Π—Π΄Π΅ΡΡŒ scores[3] β€” это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 3 элСмСнтов Ρ‚ΠΈΠΏΠ° uint8, ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Ρ‚Π°ΠΊ, scores[3] β€” это массив ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1 Π±Π°ΠΉΡ‚. И Π±Π°Π»Π»Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ имя массива; Π΅Π³ΠΎ Ρ‚ΠΈΠΏ являСтся Ρ‚ΠΈΠΏΠΎΠΌ указатСля. Но здСсь scores β€” это имя массива, Π° 10, 20, 30 β€” инициализация. И ΠΌΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот массив Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ; Π²Ρ‹ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ это x ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ΠΌ.

Π—Π΄Π΅ΡΡŒ 10 β€” 0-ΠΉ элСмСнт, 20 β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, 30 β€” Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт. Если Π²Ρ‹ Π½Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ 0 Π±Π°Π»Π»ΠΎΠ², Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10. Если Π²Ρ‹ Π½Π°Π±Π΅Ρ€Π΅Ρ‚Π΅ 1 Π±Π°Π»Π», Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 20. ΠœΡ‹ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌ это индСксациСй. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ называСтся ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом. Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС.

Β 

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив:

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

Π’Π°Π±Π»ΠΈΡ†Π°: Π’Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько строк ΠΈ нСсколько столбцов.

Рисунок 2. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Рассмотрим этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 2. Π—Π΄Π΅ΡΡŒ scores β€” это имя Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, [2] β†’Β  ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство строк Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π° [ 3] β†’ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°Π±Π»ΠΈΡ†Π° β€” это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ располоТСниС Π΄Π°Π½Π½Ρ‹Ρ….

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ поля [2] ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ строками, Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ поля [3] ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ столбцами. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ называСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ y ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ x. И Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку, ΠΏΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π·Π°ΠΏΡΡ‚ΡƒΡŽ ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π²Ρ‚ΠΎΡ€ΡƒΡŽ строку. 10, 20, 30 эти значСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки.

Β 

Рисунок 3. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Допустим, Ссли я ΠΏΠΈΡˆΡƒ Ρ‚ΠΈΠΏΠ° scores[0][1], Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ 0-ΠΉ строки, ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ столбца, я ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ 20, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рисункС 3.

Β 

Рисунок 4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Если я дСлаю Π±Π°Π»Π»Ρ‹[1][2], это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ строку 1, столбСц 2. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ прСдоставляСт, Ρ€Π°Π²Π½ΠΎ 45 (рисунок 4). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Β 

ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ?

Рисунок 5. ΠœΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ лист Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΡ-1 ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ Π²Π°Π»ΠΊΠΎΠ²

Β 

Рассмотрим этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€: ΠΎΡ†Π΅Π½ΠΎΡ‡Π½Ρ‹ΠΉ лист тСста 1 вашСго класса Π² Π²ΠΈΠ΄Π΅ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² бросков, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 5. Π•ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΡƒΡ‡Π΅Π½ΠΈΠΊΠ°; НомСра Ρ€ΡƒΠ»ΠΎΠ½ΠΎΠ² ΠΎΡ‚ 0 Π΄ΠΎ 3 ΠΈ 4 ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π°. Код ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π° ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ β€” 0. Код ΠΏΠΎ Ρ„ΠΈΠ·ΠΈΠΊΠ΅ β€” 1. Код ΠΏΠΎ Ρ…ΠΈΠΌΠΈΠΈ β€” 2. Код ΠΏΠΎ экономикС β€” 3. А ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ β€” это ΠΎΡ†Π΅Π½ΠΊΠΈ, выставлСнныС учащимся.

Как Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅?

uint8_t marksheet_of_test[16] = {34, 56, 77, 99, 67, 34, 89 …… 21,43};

МоТно ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ 16 Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ создаСтС ΠΎΠ΄ΠΈΠ½ массив ΠΈΠ· 16 Π±Π°ΠΉΡ‚ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ сохраняСтС 34,56, 77, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ, Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ послСдних чисСл.

НСдостаток этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ значСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ Π½Π°Π±Ρ€Π°Π» Бросок Π½ΠΎΠΌΠ΅Ρ€ 1 ΠΏΠΎ Ρ…ΠΈΠΌΠΈΠΈ? Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠ°ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив? Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТно. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ это Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ. Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ это.

Рисунок 6. ΠžΡ†Π΅Π½ΠΎΡ‡Π½Ρ‹ΠΉ лист ВСста-1 ΠΏΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌ бросков

Β 

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, ΠΎΡ†Π΅Π½ΠΊΠ°, выставлСнная ΠΏΠΎ броску Π½ΠΎΠΌΠ΅Ρ€ 1, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ 67. Как Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ 67? Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ сюда ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ряду.

uint8_t mark = marksheet_of_test1[1*4+2];

НомСр Ρ€ΡƒΠ»ΠΎΠ½Π° 1, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство столбцов. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ это. 1 умноТаСтся Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство столбцов 4 ΠΈ Π·Π°Ρ‚Π΅ΠΌ добавляСтся ΠΊΠΎΠ΄ Ρ‚Π΅ΠΌΡ‹. Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ…ΠΈΠΌΠΈΠΈ; химия Ρ€Π°Π²Π½Π° 2. Π’Ρ‹ добавляСтС ΠΊ Π½Π΅ΠΉ 2. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ достигаСтС Ρ‚ΠΎΡ‡ΠΊΠΈ 89, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ.

Β 

НапримСр, какая ΠΎΡ†Π΅Π½ΠΊΠ° выставляСтся Π·Π° бросок Π½ΠΎΠΌΠ΅Ρ€ 3 ΠΏΠΎ Ρ„ΠΈΠ·ΠΈΠΊΠ΅?

Рисунок 7. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ ΠΊ 98. Как Π²Ρ‹ сюда ΠΏΠΎΠΏΠ°Π»ΠΈ? Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π² вопросС 3, умноТСнная Π½Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство столбцов 4, Ρ€Π°Π²Π½Π° 12. Π­Ρ‚ΠΎ массив ΠΈΠ· 12.Β 

Массив ΠΈΠ· 12 Ρ€Π°Π²Π΅Π½ 98, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Ρ‚Π΅ΠΌΡ‹. Код Ρ‚Π΅ΠΌΡ‹ 1. Π˜Ρ‚Π°ΠΊ, добавляСм 1. 45 (рисунок 7).

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

Β 

Рисунок 8. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив опрСдСляСтся ΠΊΠ°ΠΊ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ строки ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столбца ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ значСния.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΏΠΎ химичСскому тСсту Π·Π° 2 Π±Π°Π»Π»Π°. Π—Π΄Π΅ΡΡŒ это ΠΎΡ‡Π΅Π½ΡŒ просто; ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠΌΠ΅Ρ€ строки ΠΈ Π½ΠΎΠΌΠ΅Ρ€ столбца. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Π½ΠΎΠΌΠ΅Ρ€ 2 ΠΈ Π½ΠΎΠΌΠ΅Ρ€ столбца Ρ‚ΠΎΠΆΠ΅ 2, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΌΠ½Π΅ 30. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹, Ссли Π±Ρ‹ Π²Ρ‹ Π½Π΅ Π±ΠΎΡ€ΠΎΠ»ΠΈΡΡŒ с ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ этих ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

Β 

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив сохраняСтся Π² памяти.

Рис. 9. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² памяти

Β 

ΠŸΠ°ΠΌΡΡ‚ΡŒ, выдСлСнная для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, ΠΏΠΎ своСй ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Π°. НапримСр, посмотритС Π½Π° рисунок 9. Π’ этом массивС 3 элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ 3 Π±Π°ΠΉΡ‚Π° памяти Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ рядом Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ. И здСсь имя массива содСрТит адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива.

Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, Ссли Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

НапримСр, uint8_t items[2][2] β€” это Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с двумя строками ΠΈ двумя столбцами; это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ имССтся 4 элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π° рис. 9. Π’ памяти Π΄Π°Π½Π½Ρ‹Π΅ хранятся построчно. Π—Π΄Π΅ΡΡŒ выкладываСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ряд, ΠΏΡ€ΠΈΠΌΡ‹ΠΊΠ°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ряду. А ΠΏΠ°ΠΌΡΡ‚ΡŒ носит Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€. ΠŸΠ°ΠΌΡΡ‚ΡŒ размСщаСтся построчно. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто ΠΏΠΎΠ½ΡΡ‚ΡŒ.

По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ строкС. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Но информация столбца являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ.

Π’ΠΈΠ΄ΠΈΡ‚Π΅ Π»ΠΈ, здСсь я Π΄Π°ΠΆΠ΅ ΠΌΠΎΠ³Ρƒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²Ρ€ΠΎΠ΄Π΅ элСмСнтов[][2] , ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ строку пустой ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ столбСц Ρ€Π°Π²Π½Ρ‹ΠΌ 2, это ΠΈ ΠΏΡ€ΠΈΡ€Π°Π²Π½ΡΡ‚ΡŒ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ я Ρ…ΠΎΡ‡Ρƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° компилятор Π²ΠΈΠ΄ΠΈΡ‚ этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, компилятор ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ строки. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ строки.

Β 

Рисунок 10. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

Β 

ΠŸΠ΅Ρ€Π²Π°Ρ строка {1, 2} ΠΈ инициализация Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки {2,3}.

uint8_t элСмСнтов[2][2] β†’ Когда компилятор ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС, ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ состоит ΠΈΠ· Π΄Π²ΡƒΡ… строк ΠΈ Π΄Π²ΡƒΡ… столбцов.

uint8_t items[][] β†’ Когда Π²Ρ‹ упомянСтС это ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΎΠ½ΠΎ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли Π²Ρ‹ Π΅Π³ΠΎ скомпилируСтС. И Ρ‡Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎΠ± ошибкС, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ столбцС. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ столбцС, внСшняя Π³Ρ€Π°Π½ΠΈΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ здСсь, Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ.

uint8_t items[][2] β†’ Π’Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ 2 Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ столбца ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅. Π₯ΠΎΡ€ΠΎΡˆΠΎ. Π­Ρ‚ΠΎ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам. ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Когда компилятор это Π²ΠΈΠ΄ΠΈΡ‚, ΠΎΠ½ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ строк Π΄Π²Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΠ½ сам Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Но Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ столбцС. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² строкС Π΄Π²Π΅ записи, это Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ Π΄Π²Π° столбца. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

uint8_t items[][4] β†’ Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ компилируСтся. Π§Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚? Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ строки. Π­Ρ‚ΠΎ исправлСно. Но Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столбца, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Π²Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ 0. Π’ этом ΠΈ смысл. Π­Ρ‚ΠΎ внСшняя Π³Ρ€Π°Π½ΠΈΡ†Π°.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ столбцах, Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ строках ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.