ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² си: ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² языкС Π‘ΠΈ

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

Π£Ρ€ΠΎΠΊ #8 — ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅

Π’ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ познакомимся с массивами Π΄Π°Π½Π½Ρ‹Ρ… Π² языкС C++. ΠœΡ‹ научимся ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Ρ‚ΡŒ массивы Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². Π’ ΡƒΡ€ΠΎΠΊΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ большой объСм ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС. Π’ языкС C++ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ нСсколько основных Ρ‚ΠΈΠΏΠΎΠ² массивов.Β 

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

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ схоТС с созданиСм ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ здСсь послС названию ΠΈΠ΄ΡƒΡ‚ Π΅Ρ‰Ρ‘ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки.

Π’ массивах отсчСт начинаСтся с 0, поэтому ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ΠΏΠΎ индСксу Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ 0, Π²Ρ‚ΠΎΡ€ΠΎΠΉ — 1 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ создания массива:

char stroka[2]; // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустого массива
int[] numbers; // Π‘ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ошибкой

int nums[4];
nums[0] = 1; // Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² массив ΠΈΠ· 4 элСмСнтов

int nums2[] = { 1, 2, 3, 5 }; // ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ сразу

Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с элСмСнтами массива ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΆΠ΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ для Π½ΠΈΡ… Π½ΠΎΠ²Ρ‹Π΅ значСния.

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

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив — это массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт являСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ массивом. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ массивы с Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ влоТСнности. Π’ΠΎ Π΅ΡΡ‚ΡŒ массивы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… всС элСмСнты ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ массивами ΠΈ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС элСмСнты Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ массивы Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‡Π΅Π½ΡŒ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ массивы, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈΡ… построСния Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами.

Для создания Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки послС названия. Выглядит Ρ‚Π°ΠΊΠΎΠΉ массив ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, Π° записываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

int x[3][3] = { { 0, 34, 2 }, { 3, 4, 5 } };
cout 

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ элСмСнты ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ массивами. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Ρƒ ΠΆΠ΅ структуру Ρ‡Ρ‚ΠΎ ΠΈ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов, Π²ΠΎΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ индСкс ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ массива, Ρ‚Π°ΠΊ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ:

x[0][1] = 1; // ВмСсто 34 Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ 1

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² C++ / Ravesli

  Обновл. 4 БСн 2021  | 

На ΡƒΡ€ΠΎΠΊΠ΅ ΠΎ структурах ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ. Π­Ρ‚ΠΎ идСально, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… свойств. Однако удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ со структурами ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ большого количСства элСмСнтов оставляСт ΠΆΠ΅Π»Π°Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ.

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

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

Рассмотрим случай, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстов 30 студСнтов Π² классС. Π‘Π΅Π· использования массива Π½Π°ΠΌ придСтся Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ 30 ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…!

// ВыдСляСм 30 цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (каТдая с Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ) int testResultStudent1; int testResultStudent2; int testResultStudent3; // … int testResultStudent30;

// ВыдСляСм 30 цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (каТдая с Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ)

int testResultStudent1;

int testResultStudent2;

int testResultStudent3;

// …

int testResultStudent30;

Π‘ использованиСм массива всё Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка эквивалСнтна ΠΊΠΎΠ΄Ρƒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π²Ρ‹ΡˆΠ΅:

int testResult[30]; // выдСляСм 30 цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ фиксированный массив

int testResult[30]; // выдСляСм 30 цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ фиксированный массив

Π’ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [], Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ компилятору, Ρ‡Ρ‚ΠΎ это пСрСмСнная массива (Π° Π½Π΅ обычная пСрСмСнная), Π° Π² скобках β€” количСство выдСляСмых элСмСнтов (это называСтся

Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ массива).

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅, ΠΌΡ‹ объявили фиксированный массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ testResult ΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ 30. Ѐиксированный массив (ΠΈΠ»ΠΈ «массив фиксированной Π΄Π»ΠΈΠ½Ρ‹Β») прСдставляСт собой массив, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ извСстСн Π²ΠΎ врСмя компиляции. ΠŸΡ€ΠΈ создании testResult, компилятор Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ 30 цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массива

КаТдая ΠΈΠ· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² массивС называСтся элСмСнтом. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ своих собствСнных ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠ΅Π½. ВмСсто этого для доступа ΠΊ Π½ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ имя массива вмСстС с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ индСкса [] ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся индСксом, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт компилятору, ΠΊΠ°ΠΊΠΎΠΉ элСмСнт ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎΡ‚ процСсс называСтся индСксированиСм массива

.

Π’ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом Π² нашСм массивС являСтся testResult[0], Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” testResult[1], дСсятый β€” testResult[9], послСдний β€” testResult[29]. Π₯ΠΎΡ€ΠΎΡˆΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΊΡƒΡ‡Ρƒ Ρ€Π°Π·Π½Ρ‹Ρ… (Ρ…ΠΎΡ‚ΡŒ ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ…) ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… β€” для доступа ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ элСмСнтам Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ индСкс.

Π’Π°ΠΆΠ½ΠΎ: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ повсСднСвной ΠΆΠΈΠ·Π½ΠΈ, отсчСт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π² языкС Π‘++ всСгда начинаСтся с 0, Π° Π½Π΅ с 1!

Π’ массивС Π΄Π»ΠΈΠ½ΠΎΠΉ N элСмСнты массива Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Ρ‹ ΠΎΡ‚ 0 Π΄ΠΎ N-1! Π­Ρ‚ΠΎ называСтся Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с использованиСм массива

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΈ индСксированиС массива:

#include <iostream> int main() { int array[5]; // массив ΠΈΠ· пяти чисСл array[0] = 3; // индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта — 0 (Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт) array[1] = 2; array[2] = 4; array[3] = 8; array[4] = 12; // индСкс послСднСго элСмСнта — 4 std::cout << «The array element with the smallest index has the value » << array[0] << «\n»; std::cout << «The sum of the first 5 numbers is » << array[0] + array[1] + array[2] + array[3] + array[4] << «\n»; return 0; }

#include <iostream>

int main()

{

Β Β Β Β int array[5]; // массив ΠΈΠ· пяти чисСл

Β Β Β Β array[0] = 3; // индСкс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта — 0 (Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт)

Β Β Β Β array[1] = 2;

Β Β Β Β array[2] = 4;

Β Β Β Β array[3] = 8;

Β Β Β Β array[4] = 12; // индСкс послСднСго элСмСнта — 4

Β Β Β Β std::cout << «The array element with the smallest index has the value » << array[0] << «\n»;

Β Β Β Β std::cout << «The sum of the first 5 numbers is » << array[0] + array[1] + array[2] + array[3] + array[4] << «\n»;

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

The array element with the smallest index has the value 3
The sum of the first 5 numbers is 29

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ массивы

Массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. НапримСр, объявляСм массив Ρ‚ΠΈΠΏΠ° double:

#include <iostream> int main() { double array[3]; // выдСляСм 3 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° double array[0] = 3.5; array[1] = 2.4; array[2] = 3.4; std::cout << «The average is » << (array[0] + array[1] + array[2]) / 3 << «\n»; return 0; }

#include <iostream>

int main()

{

Β Β Β Β double array[3]; // выдСляСм 3 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° double

Β Β Β Β array[0] = 3.5;

Β Β Β Β array[1] = 2.4;

Β Β Β Β array[2] = 3.4;

Β Β Β Β std::cout << «The average is » << (array[0] + array[1] + array[2]) / 3 << «\n»;

Β Β Β Β return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

The average is 3.1

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ· структур, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

struct Rectangle { int length; int width; }; Rectangle rects[4]; // объявляСм массив с 4-мя ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°ΠΌΠΈ

struct Rectangle

{

Β Β Β Β int length;

Β Β Β Β int width;

};

Rectangle rects[4]; // объявляСм массив с 4-мя ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°ΠΌΠΈ

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

Π˜Π½Π΄Π΅ΠΊΡΡ‹ массивов

Π’ языкС C++ индСксы массивов всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… (Ρ‚.Π΅. Ρ‚ΠΈΠΏΠ° char, short, int, long, long long, bool ΠΈ Ρ‚.Π΄.). Π­Ρ‚ΠΈ индСксы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ

константными значСниями, Π»ΠΈΠ±ΠΎ нСконстантными значСниями. НапримСр:

int array[4]; // объявляСм массив Π΄Π»ΠΈΠ½ΠΎΠΉ 4 // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π» (константу) Π² качСствС индСкса array[2] = 8; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ пСрСчислСниС (константу) Π² качСствС индСкса enum Animals { ANIMAL_CAT = 3 }; array[ANIMAL_CAT] = 5; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (Π½Π΅ константу) Π² качСствС индСкса short index = 4; array[index] = 8; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ

int array[4]; // объявляСм массив длиной 4

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π» (константу) Π² качСствС индСкса

array[2] = 8; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ пСрСчислСниС (константу) Π² качСствС индСкса

enum Animals

{

Β Β Β Β ANIMAL_CAT = 3

};

array[ANIMAL_CAT] = 5; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (Π½Π΅ константу) Π² качСствС индСкса

short index = 4;

array[index] = 8; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ

ОбъявлСниС массивов фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

ΠŸΡ€ΠΈ объявлСнии массива фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° (ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками) Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ константой Ρ‚ΠΈΠΏΠ° compile-time (которая опрСдСляСтся Π²ΠΎ врСмя компиляции). Π’ΠΎΡ‚ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… способов объявлСния массивов с фиксированным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ:

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π» int array[7]; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ макрос-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с тСкст_Π·Π°ΠΌΠ΅Π½Π° Π² качСствС символьной константы #define ARRAY_WIDTH 4 int array[ARRAY_WIDTH]; // синтаксичСски Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ константу const int arrayWidth = 7; int array[arrayWidth]; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ enum ArrayElements { MIN_ARRAY_WIDTH = 3 }; int array[MIN_ARRAY_WIDTH]; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π΅ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ int width; std::cin >> width; int array[width]; // ΠΏΠ»ΠΎΡ…ΠΎ: width Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ константой Ρ‚ΠΈΠΏΠ° compile-time! // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° runtime int temp = 8; const int width = temp; int array[width]; // ΠΏΠ»ΠΎΡ…ΠΎ: здСсь width являСтся константой Ρ‚ΠΈΠΏΠ° runtime, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ константой Ρ‚ΠΈΠΏΠ° compile-time!

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π»

int array[7]; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ макрос-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с тСкст_Π·Π°ΠΌΠ΅Π½Π° Π² качСствС символьной константы

#define ARRAY_WIDTH 4

int array[ARRAY_WIDTH]; // синтаксичСски Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ константу

const int arrayWidth = 7;

int array[arrayWidth]; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ

enum ArrayElements

{

Β Β Β Β MIN_ARRAY_WIDTH = 3

};

int array[MIN_ARRAY_WIDTH]; // Ρ…ΠΎΡ€ΠΎΡˆΠΎ

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π½Π΅ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ

int width;

std::cin >> width;

int array[width]; // ΠΏΠ»ΠΎΡ…ΠΎ: width Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ константой Ρ‚ΠΈΠΏΠ° compile-time!

// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° runtime

int temp = 8;

const int width = temp;

int array[width]; // ΠΏΠ»ΠΎΡ…ΠΎ: здСсь width являСтся константой Ρ‚ΠΈΠΏΠ° runtime, Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ константой Ρ‚ΠΈΠΏΠ° compile-time!

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π² Π΄Π²ΡƒΡ… послСдних случаях ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π° массива Π½Π΅ являСтся константой Ρ‚ΠΈΠΏΠ° compile-time. НСкоторыС компиляторы ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ использованиС Ρ‚Π°ΠΊΠΈΡ… массивов, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ Π² соотвСтствии со стандартами языка C++ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, написанных Π½Π° C++.

Π§ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΠΎ динамичСских массивах

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массивам фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСляСтся Π²ΠΎ врСмя компиляции, Ρ‚ΠΎ здСсь ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²Π° ограничСния:

Β  Β ΠœΠ°ΡΡΠΈΠ²Ρ‹ фиксированного Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π½Π° любом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Π²Π²ΠΎΠ΄Π΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ вычисляСтся Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (runtime).

Β   ЀиксированныС массивы ΠΈΠΌΠ΅ΡŽΡ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях эти ограничСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌΠΈ. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, C++ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ массивов, извСстный ΠΊΠ°ΠΊ динамичСский массив. Π Π°Π·ΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ установлСн ​​во врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. Однако созданиС динамичСских массивов нСсколько слоТнСС фиксированных, поэтому ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± этом нСсколько ΠΏΠΎΠ·ΠΆΠ΅.

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

ЀиксированныС массивы ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ простой способ выдСлСния ΠΈ использования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Ρ€Π°Π·ΠΌΠ΅Ρ€ массива извСстСн Π²ΠΎ врСмя компиляции.

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим большС Ρ‚Π΅ΠΌ, связанных с фиксированными массивами.

ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ:

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°…

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях:

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ (C#) Π½Π° видСокурсС ΠΎΡ‚ Loftblog

ВсСм Π΄ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток! На ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠ°Ρ… ΠΌΡ‹ познакомились с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ ООП: наслСдованиСм, инкапсуляциСй ΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠΎΠΌ. БСгодня Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ‚Π°ΠΊΠΎΠ΅ понятиС, ΠΊΠ°ΠΊ массивы Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ ΠΈ научимся Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ.

НСмного ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ массивах

На ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊΠ°Ρ… ΠΌΡ‹ ΡƒΠΆΠ΅ знакомились с понятиСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π­Ρ‚ΠΎ ячСйка Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, которая содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’Π°ΠΊ Π²ΠΎΡ‚, массивы Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… языках программирования, – это конструкция, которая позволяСт ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько Ρ‚Π°ΠΊΠΈΡ… ячССк, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ это ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… ячССк.

Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ массив – это упорядочСнная ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² Π½Π΅ΠΌ упорядочСны ΠΏΠΎ индСксу, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ индСксация начинаСтся с нуля. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ) ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивами Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ. Π Π°Π·Π΄Π΅Π»ΠΈΠΌ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Π½Π° Π΄Π²Π΅ части: ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° с ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ аспСкт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, – это объявлСниС (инициализация) массива. ΠžΠ±Ρ‰Π°Ρ конструкция Π΄Π²ΡƒΡ… способов ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • Ρ‚ΠΈΠΏ[] имя_массива = new Ρ‚ΠΈΠΏ[количСство_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…];
  • Ρ‚ΠΈΠΏ[] имя_массива = new Ρ‚ΠΈΠΏ[] {пСрСчислСниС_Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ};

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΄Π²Π° массива Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ – массив мСсяцСв ΠΈ массив Π΄Π½Π΅ΠΉ:

string[] mounths = new string[] {«January», «February», «March»}; string[] days = new string[7];

string[] mounths = new string[] {«January», «February», «March»};

string[] days = new string[7];

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ обратимся ΠΊ массиву. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ индСксация массива начинаСтся с 0. ΠžΠ±Ρ‰Π°Ρ конструкция обращСния:

имя_массива[индСкс_элСмСнта] = значСния;

имя_массива[индСкс_элСмСнта] = значСния;

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° присвоим ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту массива Π΄Π½Π΅ΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«MondayΒ»:

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ называСтся массив, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΉ двумя ΠΈΠ»ΠΈ большим количСством размСрностСй. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива являСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив. Π—Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ строчки ΠΈ столбцы, Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ индСкс. Как ΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ массивы Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ? ΠžΡ‡Π΅Π½ΡŒ просто:

  • Ρ‚ΠΈΠΏ[,] имя_массива = new Ρ‚ΠΈΠΏ[,] {{_, _}, …, {_, _}};

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ запятых Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ размСрности массива.

Π‘ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву всС Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΡƒΠΆΠ΅ Π΄Π²Π° индСкса – Π½ΠΎΠΌΠ΅Ρ€ строки, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π½ΠΎΠΌΠ΅Ρ€ столбца.

На этом Π²ΠΈΠ΄Π΅ΠΎΡƒΡ€ΠΎΠΊ наш, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны массивы Π² Π‘ΠΈ Π¨Π°Ρ€ΠΏ, Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ! НадССмся,Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·Ρƒ. Π”ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… встрСч!

ΠŸΡ€ΠΈΡΡ‚Π½ΠΎΠ³ΠΎ всСм просмотра! Π£Ρ‡ΠΈΡ‚Π΅ΡΡŒ с ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ! ВсСгда ваш LoftBlog.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ курсы

ΠœΠΠ‘Π‘Π˜Π’Π« Π² БИ ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

ΠœΠΠ‘Π‘Π˜Π’Π« Π². БИ

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠœΠ°ΡΡΠΈΠ²Ρ‹ – это Π³Ρ€ΡƒΠΏΠΏΠ° элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (double, float, int ΠΈ Ρ‚. Π΄. ). 1) ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы. ОбъявлСниС массива ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°: ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π·Π°Π΄Π°Π΅Ρ‚ количСство элСмСнтов массива: Массив Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти. Для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΏΠΎΠ»Π½Ρ‹ΠΉ объСм Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти Π² Π±Π°ΠΉΡ‚Π°Ρ… вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅: Массив прСдставляСт собой Π½Π°Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, располоТСнных Π² памяти Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ индСксам элСмСнтов ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³ΠΊΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ адрСс ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния. НапримСр, ΠΏΡƒΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив А состоит ΠΈΠ· элСмСнтов, располоТСнных Π² памяти подряд ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ индСксов, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠΎ k Π±Π°ΠΉΡ‚. Π’ΠΎΠ³Π΄Π° адрСс i-Ρ‚ΠΎΠ³ΠΎ элСмСнта вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

2) ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы. ОбъявлСниС массива ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ОбъСм Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ памяти Π² Π±Π°ΠΉΡ‚Π°Ρ… для Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ : Если Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС Π’ размСрности М*N , располоТСнным Π² памяти ΠΏΠΎ строкам, Ρ‚ΠΎ адрСс ΠΈ B[i][j] вычисляСтся ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

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

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массивов Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния элСмСнтов массива Π±Π΅Π· программирования ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… дСйствий. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: 1) Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ всСх элСмСнтов массива ΠΈΠ»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹Ρ… элСмСнтов: 2) Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

Π—Π°Π΄Π°Ρ‡Π° 1. ΠŸΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ сумму элСмСнтов массива.

Π—Π°Π΄Π°Ρ‡Π° 2: Найти ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт массива.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Когда компилятор ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, int i = 0, ΠΎΠ½ выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² соотвСтствии с Ρ‚ΠΈΠΏΠΎΠΌ int ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 10. ВсС обращСния Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ Π΅Ρ‘ ΠΈΠΌΠ΅Π½ΠΈ i Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ компилятором Π½Π° адрСс памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ собствСнныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ для хранСния адрСсов областСй памяти. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ указатСлями. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ — это адрСс памяти, распрСдСлСнной для размСщСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° (Π² качСствС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, массива, структуры, строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°). Π’Ρ€ΠΈ Π²ΠΈΠ΄Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ: 1) Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. 2) Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. 3) Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° void.

1) Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ содСрТит адрСс области памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (основного ΠΈΠ»ΠΈ составного). Π€ΠΎΡ€ΠΌΠ° записи: 2) Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ содСрТит адрСс Π² сСгмСнтС ΠΊΠΎΠ΄Π°, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ располагаСтся исполняСмый ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ адрСс, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π€ΠΎΡ€ΠΌΠ° записи: НапримСр: объявлСниС Π·Π°Π΄Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ fun Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int ΠΈ ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ‚ΠΈΠΏΠ° double. 3) Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° void примСняСтся Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ трСбуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ, Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ трСбуСтся Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ адрСса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

Бвязь ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ массивов Π’ языкС БИ ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями ΠΈ массивами сущСствуСт тСсная связь. Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ массив Π² Π²ΠΈΠ΄Π΅ int array[25], Ρ‚ΠΎ ΠΏΡ€ΠΈ этом выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ пяти элСмСнтов массива, Π½ΠΎ ΠΈ для указатСля с ΠΈΠΌΠ΅Π½Π΅ΠΌ array, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ становится Ρ€Π°Π²Π½Ρ‹ΠΌ адрСсу ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠΎ счСту (Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ) элСмСнта массива. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, сам массив остаСтся бСзымянным, Π° доступ ΠΊ элСмСнтам массива осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ array. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния синтаксиса языка ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ array являСтся константой, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² выраТСниях, Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ нСльзя. ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π—Π΄Π΅ΡΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p устанавливаСтся Π½Π° адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта масcΠΈΠ²Π°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ присваивания p=array ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² эквивалСнтной Ρ„ΠΎΡ€ΠΌΠ΅ p=&array[0].

Для доступа ΠΊ элСмСнтам массива сущСствуСт Π΄Π²Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способа: 1. ИспользованиС индСксных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, array[16]=3 ΠΈΠ»ΠΈ array[2]=7. Записи array[16] ΠΈ 16[array] Π±ΡƒΠ΄ΡƒΡ‚ эквивалСнтными ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ сСмнадцатый элСмСнт массива. 2. ИспользованиС адрСсных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ разадрСсации, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ *(p+15)=3 ΠΈΠ»ΠΈ *(p+1)=7. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ способС доступа адрСсноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ адрСсу ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΎΠ³ΠΎ элСмСнта массива Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записано Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ способами *(p+15) ΠΈΠ»ΠΈ *(15+p). ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями Над указатСлями ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ (++) ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ (—). ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля увСличиваСтся ΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Ρ‚ΠΈΠΏΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

ДинамичСскоС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ массивов ΠŸΡ€ΠΈ динамичСском распрСдСлСнии памяти для массивов слСдуСт ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса Π½Π°Ρ‡Π°Π»Π° области Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти. АдрСс формируСтся ΠΊΠ°ΠΊ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ calloc ΠΈΠ»ΠΈ malloc. ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив a[10] ΠΈΠ· элСмСнтов Ρ‚ΠΈΠΏΠ° float ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ : Для создания Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π²Π½Π°Ρ‡Π°Π»Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ для массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, Π° Π·Π°Ρ‚Π΅ΠΌ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. ΠŸΡƒΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив a[n][m]. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² дальнСйшСм Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ для выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠ°ΠΌΡΡ‚ΡŒ слСдуСт ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ free.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл randomize β€’ Ѐункция randomize ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл. β€’ ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ содСрТится Π² Ρ„Π°ΠΉΠ»Π΅ stdlib. h. β€’ Π’Π°ΠΊ ΠΊΠ°ΠΊ randomize это ΠΌΠ°ΠΊΡ€ΠΎ-функция, Ρ‚ΠΎ рСкомСндуСтся ΠΏΡ€ΠΈ использовании этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» time. h.

Π€ΠΎΡ€ΠΌΡ‹ записи: 1) rand()%100 – случайныС числа ΠΎΡ‚ 0 Π΄ΠΎ 99 2) 1 + rand()%100 – случайныС числа ΠΎΡ‚ 1 Π΄ΠΎ 100 3) 200 — rand()%400 – случайныС числа ΠΎΡ‚ -199 Π΄ΠΎ 200 Π—Π°Π΄Π°Ρ‡Π° 3: ВывСсти 10 случайных Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΎΡ‚ 0 Π΄ΠΎ 99

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° массивов Π—Π°Π΄Π°Ρ‡Π° 4. Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ случайными числами Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 99. Найти Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

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

Π—Π°Π΄Π°Ρ‡Π° 3. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ строкам с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈ вычисляСт сумму Π΅Π³ΠΎ элСмСнтов столбца.

Π—Π°Π΄Π°Ρ‡Π° 4. ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ прямого Π²Ρ‹Π±ΠΎΡ€Π° сортируСт ΠΏΠΎ ΡƒΠ±Ρ‹Π²Π°Π½ΠΈΡŽ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Π Π°Π±ΠΎΡ‚Π° с массивами Π½Π° Π‘ΠΈ. Π§Π°ΡΡ‚ΡŒ 1

Π”ΠΎΠ±Ρ€ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ суток, сСгодня ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ массивах, Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ тонкости заполнСния массивов Π² Π‘ΠΈ. Π’Π΅ΠΌΠ° нСслоТная, Π΄ΡƒΠΌΠ°ΡŽ, Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘Ρ‚Π΅ΡΡŒ. Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Ρ‘ΠΌ.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ цСлочислСнный массив array_int[N] (N = 34) числами ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [-83; 90] ΠΈ массив array_double[N] Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ числами ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [-2.38; 6.57]. ВывСсти массивы Π½Π° экран Π² Π΄Π²Π΅ строки. ВывСсти массивы Π² Ρ„Π°ΠΉΠ» Π² Π΄Π²Π° столбца Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Β«array_int[индСкс] = Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅; array_double[индСкс]= Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β».

Код:

#include <stdio.h>
#include <stdlib.h>
#define N 34

int main(void) {
	FILE*file;
	file = fopen("file.txt","w");
	int array_int[N], i, j;
	for (i = 1; i <= N; i++){
		array_int[i] = -83 +rand() % (90 + 83 + 1);
		printf("%d  ", array_int[i]);

	}
	printf("\n");
	double array_double[N],t;
	for (j = 1; j <= N;){
		t = rand() % 8 - 2 + (rand() % 95 - 38) / 100.0;
		if ((t <= 6.57 ) && (t >= -2.38)) {
                array_double[j] = t;
                printf("%.2lf  ", array_double[j]);
                j++;
		}

	}
	for (i = 1; i <= N; i++){
		fprintf(file, "array_int[%d] = %d\t array_double[%d] = %.2lf \n  ", i, array_int[i], i, array_double[i]);
	}
	fclose(file);
	return EXIT_SUCCESS;
}

Π’Ρ‹Π²ΠΎΠ΄:

Команд Π½ΠΎΠ²Ρ‹Ρ… Π½Π΅Ρ‚, Π½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± изюминкС Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ (ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ массива):

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ Β«Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹ΠΌΠΈΒ» числами ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [-2.38; 6.57], Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сначала ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ числа rand() % 8 β€” 2, Π³Π΄Π΅ 8 сумма Ρ†Π΅Π»ΠΎΠ³ΠΎ чисСл Ρƒ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ (-2.38 ΠΈ 6.57), Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ (rand() % 95 β€” 38) / 100.0, Π³Π΄Π΅ 95 сумма Π³Ρ€Π°Π½ΠΈΡ† ( 38 + 57 ).
ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ условиС if ((t = -2.38)), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² этом Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅.

А Ρ‚Π°ΠΊΠΆΠ΅ Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ я ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Ρƒ Ρ†ΠΈΠΊΠ»Π° for пСрСмСнная j ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² объявлСнии Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ ΠΈ посСрСдинС Π΅Π³ΠΎ.
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ массив array[20] стСпСнями числа 2, начиная с минус пятой стСпСни. ВывСсти массив Π½Π° экран Π² строку.

Код:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 20
int main(void) {
	int i,k;
	k = -5;
	double array[N];
	for (i = 0; i < N; i++){
		array[i] = pow(2,k);
		k++;
		printf("%.3lf  ", array[i]);
	}
	return EXIT_SUCCESS;
}

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного. Если Π²Ρ‹ осилили ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΡΡ‚Π°Ρ‚ΡŒΡΡ…, Ρ‚ΠΎ это для вас Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΏΠ°Π»ΡŒΡ†Ρ‹ Ρ€Π°Π·ΠΌΡΡ‚ΡŒ =)
Π•Π΄Π΅ΠΌ дальшС.

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 15 элСмСнтов случайными числами ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° [-30; 16]. ВывСсти Π½Π° экран массив Π² строку. Найти ΠΏΠ΅Ρ€Π²ΠΎΠ΅ с ΠΊΠΎΠ½Ρ†Π° массива число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΊΡ€Π°Ρ‚Π½ΠΎ 7, Ссли Ρ‚Π°ΠΊΠΈΡ… чисСл Π½Π΅Ρ‚, Ρ‚ΠΎ вывСсти сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ чисСл ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… сСми Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break.

#include <stdio.h>
#include <stdlib.h>
#define N 15
int main(void) {
	int mas[N], i, k = 0;
	for (i = 0; i < N; i++){
		mas[i] = - 30 + rand() % (16 + 30 + 1);
		printf("%d  ", mas[i]);
	}
	for (i = N - 1; i >= 0; i--){
		if (mas[i] % 7 == 0) {
			printf("\n%d", mas[i]);
			k = 1;
			break;
		}
	}
	if (k == 0) printf("Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ");
	return EXIT_SUCCESS;
}

Break β€” ΠΊΠΎΠΌΠ°Π½Π΄Π° прСрывания Ρ†ΠΈΠΊΠ»Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Π½Π΅Π³ΠΎ, запуск ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ инструкций. Алгоритм Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° нСслоТСн.
И послСдний на сСгодня:

Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 20-Ρ‚ΠΈ элСмСнтов ΠΈΠ· Ρ„Π°ΠΉΠ»Π° input.txt ΠΈ вывСсти Π΅Π³ΠΎ Π½Π° экран. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнты массива, ΡƒΠΌΠ½ΠΎΠΆΠΈΠ² Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты Π½Π° 2, Π° Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ β€” Π½Π° 3. ВывСсти ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ массив Π½Π° экран Π½Π° Π½ΠΎΠ²ΠΎΠΉ строкС.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
	FILE*input;
	input = fopen("input.txt","r");
	int mas[20],i;
	for (i = 1; i <= 20; i++){
		fscanf(input, "%d", & mas[i]);
		printf("%d  ", mas[i]);
	}
	printf("\n");
	for (i = 1; i <= 20; i++){
		if (mas[i] % 2 == 0){
			mas[i] *= 2;
		}
		else {
			mas[i] *= 3;
		}
		printf("%d  ", mas[i]);
	}
	fclose(input);
	return EXIT_SUCCESS;
}

Π’Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄:

Π’ΡƒΡ‚ Ρ‚ΠΎΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ особСнного, поэтому Π½Π° этом ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ.=)

Π’ΠΎΡ‚ ΠΈ всё. ΠŸΠΈΡˆΠΈΡ‚Π΅ вопросы, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅, всСм ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠΌ.

ВсС исходники Π±Π΅Π· Ρ„Π°ΠΉΠ»ΠΎΠ² txt.
Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исходники Π·Π°Π΄Π°Ρ‡ΠΈ β€” 1
Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исходники Π·Π°Π΄Π°Ρ‡ΠΈ β€” 2
Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исходники Π·Π°Π΄Π°Ρ‡ΠΈ β€” 3
Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исходники Π·Π°Π΄Π°Ρ‡ΠΈ β€” 4

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ссылкой:

ΠŸΠΎΡ…ΠΎΠΆΠ΅Π΅

ДинамичСскиС массивы Π² Π‘ΠΈ

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

ДинамичСскиС массивы Π² Π‘ΠΈ β€” это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ использования памяти элСктронной Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, сущСствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° динамичСского распрСдСлСния памяти. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ массива ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ объявлСния Π΄Π°Π½Π½ΠΎΠ³ΠΎ массива. МоТно Π·Π°Π΄Π°Ρ‚ΡŒ массиву ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ зафиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΡ‚ нуля Π΄ΠΎ ста элСмСнтов). Но Π² этом случаС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ с Π΅Ρ‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с массивом, состоящим Π½Π΅ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΈΠ· ста элСмСнтов. Π’ случаС использования, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΠΈ элСмСнтов, ΠΎΠ±ΡŠΡ‘ΠΌ выдСляСмой памяти всё Ρ€Π°Π²Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ сто элСмСнтов, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив Π±Ρ‹Π» заявлСн ΠΊΠ°ΠΊ статичСский. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π½Π°Π»ΠΈΡ†ΠΎ ΠΌΠ°Π»ΠΎ эффСктивноС использованиС памяти.

ДинамичСскиС массивы

На языкС программирования Π‘ΠΈ динамичСскиС массивы Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ динамичСского выдСлСния памяти: malloc() ΠΈΠ»ΠΈ са11ос(). Команда malloc() выполняСт Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ указатСля Π½Π° выдСляСмоС Π² памяти мСсто. Π­Ρ‚Π° функция являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ stdlib.h ΠΈ записываСтся Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

void *Ρ‚Π°11ос (число Π±Π°ΠΉΡ‚)

Для сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², трСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ malloc() Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΡƒ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° цСлочислСнный массив, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

(int *)

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

Π“ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ

(int ) malloc(10 sizeof(int)))

Π’ языкС программирования Π‘++ прСдусмотрСны ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ new ΠΈ delete, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ динамичСских массивов Π² памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Команда new выполняСт Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΈΠ· свободных областСй, Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° delete ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ эту ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти. ПослС окончания использования Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡ΠΈΡ‰Π΅Π½Π° ΠΎΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ new ΠΈ delete ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² ΠΏΠ°Ρ€Π΅. Если Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² явном Π²ΠΈΠ΄Π΅, Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ это ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Но ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ‚Π°Ρ‚Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π‘++ delete.

Команда new выполняСт созданиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ для Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΡ‘ΠΌ памяти ΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ указатСля ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π° эту ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти. Π’ случаС нСвозмоТности выдСлСния памяти, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π½Π΅Ρ‚ Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ свободного ΠΎΠ±ΡŠΡ‘ΠΌΠ°, Ρ‚ΠΎ происходит Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ указатСля. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° ΠΏΠΎΠ΄ любой Π²ΠΈΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…: int, float, double, char ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ динамичСского массива:

float *ptrarray = new float [10]; // объявлСн ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ динамичСский массив Π½Π° Π΄Π΅ΡΡΡ‚ΡŒ элСмСнтов.

// здСсь ptrarray – ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Ρ‹Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти для вСщСствСнного массива Ρ‚ΠΈΠΏΠ° float.

По Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с динамичСским массивом, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая Π²Ρ‹Π΄Π΅Π»ΡΠ»Π°ΡΡŒ для Π½Π΅Π³ΠΎ:

delete [] ptrarray; // очистка памяти, которая Π²Ρ‹Π΄Π΅Π»ΡΠ»Π°ΡΡŒ ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ динамичСский массив.

Π—Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ delete Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ освобоТдСния участка памяти, ΠΎΡ‚Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

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

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

ОбъявлСниС массива

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

Π’ΠΎΡ‚ шаблон синтаксиса объявлСния ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:


 Data_Type Array_Name   [  Const_Int_Expression  ] ;

Π’ шаблонС синтаксиса

  • Data_Type описываСт, Ρ‡Ρ‚ΠΎ хранится Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅ массива.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ, Π½ΠΎ ΠΏΠΎΠΊΠ° ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ наши обсуТдСниС простых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, цСлочислСнных ΠΈ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²).
  • Const_Int_Expression ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ объявлСнного массива. Π’ΠΎ Π΅ΡΡ‚ΡŒ это ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² массива Π² массивС. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ большС 0. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ n , Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ индСкса Ρ€Π°Π²Π΅Π½ 0 Π΄ΠΎ Π½-1 .
НапримСр, дСкларация

int number [50];

 

создаСт массив Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈ , состоящий ΠΈΠ· 50 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ удСрТивая ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ int .Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, Π½ΠΎΠΌΠ΅Ρ€ Π’ массивС всСго 50 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², всС ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ int .

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ массива. Π¨Π°Π±Π»ΠΎΠ½ синтаксиса для доступа ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ массива:

 Имя_массива   [  Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅_индСкса  ]  
Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ индСкса Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ цСлочислСнному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ.Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏ симв. , ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ , Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ , long ΠΈΠ»ΠΈ bool Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ всС Ρ†Π΅Π»Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Бамая простая Ρ„ΠΎΡ€ΠΌΠ° индСксного выраТСния — константа. НапримСр:

number [0] опрСдСляСт 1-ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ числового массива
number [1] опрСдСляСт Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ числового массива
number [2] опрСдСляСт Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ числового массива
number [3] опрСдСляСт Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ числового массива
number [4] опрСдСляСт ΠΏΡΡ‚ΡƒΡŽ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ числового массива
..
.
number [48] опрСдСляСт Π²Ρ‚ΠΎΡ€ΠΎΠΉ послСдний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ числового массива
number [49] опрСдСляСт послСдний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ числового массива

 

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ значСния Π² массивС number , ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:


для (int я = 0; я <50; я ++)
{
число [i] = i; // сохраняСм число Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСмСнтС массива
cout << "число [" << i << "] =" << число [i] << endl;
}

 
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.Π—Π΄Π΅ΡΡŒ Ρ†Π΅Π»ΠΎΠ΅ число Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ присваиваСтся ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» объявлСн ΠΊΠ°ΠΊ содСрТащий Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… int .

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ значСния, хранящиСся Π² массивС number , ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΊΠ°ΠΊ простая пСрСмСнная Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… int . Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


для (int я = 0; я <50; я ++)
{
число [i] = 2 * число [i]; // ΡƒΠ΄Π²Π°ΠΈΠ²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ элСмСнтС массива
// ΠΈ сохраняСм Π² элСмСнтС массива
cout << "число [" << i << "] =" << число [i] << endl;
}

Для массива Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈ допустимый Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ индСкса составляСт ΠΎΡ‚ 0 Π΄ΠΎ 49.Если IndexExpression ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ мСньшС 0 ΠΈΠ»ΠΈ большС, Ρ‡Π΅ΠΌ array_size минус 1, Ρ‚ΠΎ индСкс считаСтся Π°ΡƒΡ‚ Π² Π°ΡƒΡ‚ . НапримСр, Π½ΠΎΠΌΠ΅Ρ€ [50] - это пытаСтся ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ памяти располоТСниС Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ массива Π½ΠΎΠΌΠ΅Ρ€ .

Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅

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

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² Π΅Π΅ объявлСнии. НапримСр:


int value = 25;

 
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 25 называСтся ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ .Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π² Π΅Π³ΠΎ объявлСнии. Бписок Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… значСния для элСмСнтов массива ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Ρ‹. Они Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ запятыми ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки. НапримСр:

int age [5] = {23, 56, 87, 92, 38};

Π’ этом объявлСнии age [0] инициализируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 23, age [1] инициализируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 56 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π”ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΎΠ΄Π½ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками. Если ΡƒΠΊΠ°Π·Π°Π½ΠΎ слишком ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ синтаксичСская ошибка.Если количСство Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ мСньшС Ρ‡Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты массива Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½ΡƒΠ»Π΅ΠΌ.

Π’ C ++ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ. НапримСр:


int age [] = {23, 56, 87, 92, 38, 12, 15, 6, 3};

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ опрСдСляСт Ρ€Π°Π·ΠΌΠ΅Ρ€ массива age Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² спискС. Π—Π΄Π΅ΡΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ возрастной массив - 9.

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

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° складываСт Π΄Π²Π° цСлочислСнных массива ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΈΡ….


// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Arraypractice.cpp Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π΄Π²Π° массива ΠΈ сохранит сумму
// Π² Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ массивС. РаспСчатайтС ΠΈΡ… всС Π½Π° экранС.

#include 
ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ пространство ΠΈΠΌΠ΅Π½ std;

int main ()
{
const int MAX_ARRAY = 5;

int a [MAX_ARRAY];
int b [MAX_ARRAY];
int c [MAX_ARRAY];
int index;

// ΠŸΡ€ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ввСсти значСния для массива a [].
for (индСкс = 0; индСкс > a [индСкс];
}

// ΠŸΡ€ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ввСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для массива b [].for (индСкс = 0; индСкс > b [индСкс];
}

// БохраняСм сумму массива a [] ΠΈ массива b [] Π² массивС c [].
for (индСкс = 0; индСкс 


Β© Π”Π΅ΠΏΠ°Ρ€Ρ‚Π°ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… Π½Π°ΡƒΠΊ, УнивСрситСт Π Π΅Π΄ΠΆΠ°ΠΉΠ½Ρ‹.

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

Массив - это структура Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² смСТных мСстах. ОсновноС прСимущСство массива - ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ ΠΈ удобство использования кСша. Π’ основном сущСствуСт Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠ° массива:

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

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

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

  • Π­Ρ‚ΠΎ список списков ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ, ΠΈ всС элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ доступны с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΡ… индСкса.
  • Π•Π³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. Он Ρ‚Π°ΠΊΠΆΠ΅ извСстСн ΠΊΠ°ΠΊ ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π°.
  • Π•Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ с 2 Π΄ΠΎ 3 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.
  • ВсС ΠΎΠ½ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами.
  • Π‘Π°ΠΌΡ‹ΠΉ распространСнный ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив - это 2D-массив.
  • ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ 2-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:


Π’Π°Π±Π»ΠΈΡ†Π° Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ:

8 9025 8 9022 Π΅Π΄ΠΈΠ½Ρ‹ΠΉ список элСмСнтов Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….
Базис ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив опрСдСлСния
Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ «список списков» элСмСнта Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ….
ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ списка. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ нСсколько элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, состоящСй ΠΈΠ· строк ΠΈ столбцов.
ОбъявлСниС

ОбъявлСниС различаСтся для Ρ€Π°Π·Π½Ρ‹Ρ… языков программирования:

  1. Для C ++,
    Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… имя_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ [строка]
  2. Для Java,
    Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… [] имя_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ row]

ОбъявлСниС различаСтся для Ρ€Π°Π·Π½Ρ‹Ρ… языков программирования:

  1. Для C ++,
    Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… имя_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ [строка] [столбСц]
  2. Для Java,
    Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… [] [] имя_ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ = Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… [строка] [столбСц]
Π Π°Π·ΠΌΠ΅Ρ€ Один Π”Π²Π°
Π Π°Π·ΠΌΠ΅Ρ€ (Π±Π°ΠΉΡ‚Ρ‹) Ρ€Π°Π·ΠΌΠ΅Ρ€ (Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ * Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Ρ€Π°Π·ΠΌΠ΅Ρ€ (Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ массива) * количСство строк * количСство столбцов.
РасчСт адрСса. АдрСс [индСкса] Ρ€Π°Π²Π΅Π½ (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс + Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива * индСкс).

АдрСс [i [[j]] ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ вычислСн двумя способами: основная строка ΠΈ основной столбСц.

  1. Основной столбСц: Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс + Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта (количСство строк (j-ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° столбСц) + (i-ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° строк))
  2. Π‘Ρ‚Ρ€ΠΎΠΊΠ° Major: Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс + Π Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта (количСство столбцов (i-ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° строки) + (j-ниТняя Π³Ρ€Π°Π½ΠΈΡ†Π° столбца ))
ΠŸΡ€ΠΈΠΌΠ΅Ρ€

int arr [5]; // Π±ΡƒΠ΄Π΅Ρ‚ создан массив с ΠΎΠ΄Π½ΠΎΠΉ строкой ΠΈ ΠΏΡΡ‚ΡŒΡŽ столбцами.

{a, b, c, d, e}

int arr [2] [5]; // Π±ΡƒΠ΄Π΅Ρ‚ создан массив ΠΈΠ· Π΄Π²ΡƒΡ… строк ΠΈ пяти столбцов.

a b c d e

f g h i j

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ массивов :

  • 2D-массивы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†.
  • ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΊΡƒΡ‡Π°, стСк, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ Ρ‚. Π”.
  • Они Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ.
  • Они ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΡŽ читатСля! НС ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°ΠΉΡ‚Π΅ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ сСйчас. ΠžΡΠ²ΠΎΠΉΡ‚Π΅ всС Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ DSA с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ курса DSA Self Paced Course ΠΏΠΎ доступной для студСнтов Ρ†Π΅Π½Π΅ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ΡΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² отрасли. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ ΠΎΡ‚ изучСния языка ΠΊ DS Algo ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ, см. ΠŸΠΎΠ»Π½Ρ‹ΠΉ курс ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ ΠΊ собСсСдованию .

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΆΠΈΠ²Ρ‹Π΅ классы с экспСртами, поТалуйста, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ DSA Live Classes для Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… спСциалистов ΠΈ Π‘ΠΎΡ€Π΅Π²Π½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² прямом эфирС для студСнтов .

Один, Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ (2D) массивы ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² C

ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° C

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

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

Имя массива Π½Π° языкС C Π²Π΅Π΄Π΅Ρ‚ сСбя ΠΊΠ°ΠΊ постоянный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ прСдставляСт Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс массива. Он ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ располоТСн ΠΏΠΎ индСксу 0 -Π³ΠΎ . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ имя массива слуТит постоянным ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, Π΅Π³ΠΎ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ массивы Π² C ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈ доступны ΠΏΠΎ индСксу элСмСнта? Как ΠΊ Π½ΠΈΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ? Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ Π΅Π΅ описаниС.

 / * ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: arrayDemo.c * /
#include 
int main ()
{
  int arr [5] = {1, 2, 3, 4, 5}; // массив ΠΈΠ· 5 Ρ†Π΅Π»Ρ‹Ρ… чисСл
  для (int я = 0; я <5; я ++)
  {
    printf ("Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² мСстополоТСнии% d:% d \ n", i, arr [i]);
  }
  Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;
} 

Массив arr , ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, содСрТит 5 цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, хранящихся с индСксами ΠΎΡ‚ 0 Π΄ΠΎ 4.ИндСкс массива начинаСтся с нуля, поэтому индСкс послСднСго элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива минус ΠΎΠ΄ΠΈΠ½, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС arr [4] . НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ графичСскоС прСдставлСниС arr , Π³Π΄Π΅ массив arr ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 0. Π­Ρ‚ΠΎΡ‚ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ адрСс 1024, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ адрСсом массива ΠΈ прСдставлСн ΠΈΠΌΠ΅Π½Π΅ΠΌ массива.

ГрафичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ массива arr

Доступ ΠΊ элСмСнтам, хранящимся Π² массивС, осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ синтаксиса «имя_массива [индСкс]Β» e.g., arr [3] Π΄Π°Π΅Ρ‚ 4 Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π­Ρ‚Π° стратСгия вычисляСт Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ элСмСнта, комбинируя Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс массива с индСксом ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ элСмСнта. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ фиксированноС количСство Π±Π°ΠΉΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ извСстно Π²ΠΎ врСмя компиляции, ΠΈ это опрСдСляСтся Ρ‚ΠΈΠΏΠΎΠΌ массива. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ массив ΠΈΠΌΠ΅Π΅Ρ‚ цСлочислСнный Ρ‚ΠΈΠΏ, поэтому Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт трСбуСтся 4 Π±Π°ΠΉΡ‚Π° (Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, адрСс любого n -Π³ΠΎ элСмСнта Π² массивС с использованиСм индСксации Π½Π° основС 0 Π±ΡƒΠ΄Π΅Ρ‚ со смСщСниСм (n * element_size) Π±Π°ΠΉΡ‚ ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ адрСса массива.Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ для вычислСния адрСса элСмСнта n th .
n -ΠΉ адрСс элСмСнта = Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс массива + (n * Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта Π² Π±Π°ΠΉΡ‚Π°Ρ…)

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

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

Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° тСкста Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ясно, Ρ‡Ρ‚ΠΎ (arr + 3) являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ число arr [3] , (arr + 3) ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int * , Π° arr [3] относится ΠΊ Ρ‚ΠΈΠΏΡƒ int .Π”Π²Π° выраТСния ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (arr + 3) Π² точности эквивалСнтно Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ & arr [3] . ЀактичСски, эти Π΄Π²ΠΎΠ΅, вСроятно, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠΎΠ΄. Оба ΠΎΠ½ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт с индСксом 3. ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ синтаксичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ скобкой ([]) с синтаксисом +. Нам просто Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ указатСля. Π’ ΠΈΡ‚ΠΎΠ³Π΅ arr [3] Π² точности эквивалСнтно * (arr + 3) .

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ синтаксис разымСнования.
Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΡ‚ * (arr + 3) Π΄ΠΎ * (3 + arr) , это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ слоТСниС ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ‚ΠΈΠ²Π½ΠΎ. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ arr [3] Π½Π° 3 [arr] ? Π”Π°, Ρ‚Ρ‹ моТСшь. Но Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, [arr] 3 ΠΈΠ»ΠΈ [3] arr Π½Π΅Π²Π΅Ρ€Π½Ρ‹ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄ΡƒΡ‚ ΠΊ синтаксичСской ошибкС, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ (arr + 3) * ΠΈ (3 + arr) * Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ допустимыми выраТСниями.ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ разымСнования Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ ΠΏΠ΅Ρ€Π΅Π΄ адрСсом, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° Π½Π΅ послС адрСса.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ индСкс массива Π² C начинаСтся с нуля?

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚: ΠΎΡ‚ языкового Π΄ΠΈΠ·Π°ΠΉΠ½Π° зависит, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ индСкс Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ ΠΈΠ»ΠΈ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ†Π΅Π»Ρ‹ΠΌ числом ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ Π²Ρ‹Π±ΠΎΡ€Ρƒ. Π² Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅, ΠΊΠΎΠ³Π΄Π° массив объявлСн с Ρ†Π΅Π»Ρ‹ΠΌ числом a (10) (массив ΠΈΠ· 10 цСлочислСнных элСмСнтов), индСкс начинаСтся с 1 ΠΈ заканчиваСтся Π½Π° 10.Однако это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ‚ΠΈΠΏΠ° integer a (0: 9) , ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‰Π΅Π³ΠΎ массив с индСксами ΠΎΡ‚ 0 Π΄ΠΎ 9.
Но Π² языкС C Ρƒ нас Π½Π΅Ρ‚ свободы Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ индСкс массива с любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ числа, ΠΊΡ€ΠΎΠΌΠ΅ нуля, ΠΈ язык строго придСрТиваСтся нуля Π² качСствС Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ индСкса массива. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π² C имя массива - это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ссылкой Π½Π° ячСйку памяти. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ * (arr + n) ΠΈΠ»ΠΈ arr [n] опрСдСляСт мСстонахоТдСниС элСмСнта Π² n-позициях ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ индСкс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ смСщСниС.Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива Ρ‚ΠΎΡ‡Π½ΠΎ содСрТится Π² Ρ‚ΠΎΠΉ ячСйкС памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся массив (0 элСмСнтов), поэтому Π΅Π³ΠΎ слСдуСт ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ * (arr + 0) ΠΈΠ»ΠΈ * (arr) ΠΈΠ»ΠΈ arr [0 ] .
Π―Π·Ρ‹ΠΊ программирования C Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, поэтому индСксация с 0 являСтся Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ языка.

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

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив (Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ 2-D) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈΠ»ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ строк ΠΈ столбцов ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ массив ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов.НиТС приводится нСбольшая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° twoDimArrayDemo.c , которая ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4x3 (4 строки ΠΈ 3 столбца) ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ Π΅Π³ΠΎ элСмСнты.

 / * ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: twoDimArrayDemo.c * /
#include 
#define ROWS 4
#define COLS 3
int main ()
{
    // объявляСм массив 4x3
    int ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [ROWS] [COLS] = {{1, 2, 3},
                              {4, 5, 6},
                              {7, 8, 9},
                              {10, 11, 12}};

    для (int i = 0; i 

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

ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [0] [0] = * (* (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°))
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [i] [j] = * ((* (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°)) + (i * COLS + j))
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [i] [j] = * (* (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° + i) + j)
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [i] [j] = * (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [i] + j)
ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [i] [j] = (* (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° + i)) [j]
& matrix [i] [j] = ((* (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°)) + (i * COLS + j))

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² C

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ каТСтся слоТной, Ссли Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½ пСрСдаСтся ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ) - это Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ.Если Π²Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ синтаксис ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° синтаксис массива, Π½ΠΎ Π½Π΅ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для доступа ΠΊ элСмСнтам массива, Π±ΡƒΠ΄Π΅Ρ‚ описано Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ twoDimArrayDemo.c ΠΊΠ°ΠΊ twoDimArrayDemoPtrVer.c ΠΈ продСмонстрируСм ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ массива.

 / * ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: twoDimArrayDemoPtrVer.c * /
#include 
#define ROWS 4
#define COLS 3

void array_of_arrays_ver (int arr [] [COLS]); /* ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ */
void ptr_to_array_ver (int (* arr) [COLS]); /* ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ */

int main ()
{
    // объявляСм массив 4x3
    int ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [ROWS] [COLS] = {{1, 2, 3},
                              {4, 5, 6},
                              {7, 8, 9},
                              {10, 11, 12}};
    printf ("ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ элСмСнтов массива ΠΏΠΎ массиву Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ вСрсии массивов: \ n");
    array_of_arrays_ver (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°);
    printf ("ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ элСмСнтов массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ вСрсии массива: \ n");
    ptr_to_array_ver (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°);
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;
}

void array_of_arrays_ver (int arr [] [COLS])
{
    int i, j;
    для (i = 0; i 

Π’ twoDimArrayDemoPtrVer.c Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π΄Π²Π° способа ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ array_of_arrays_ver ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ массива массивов , Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ptr_to_array_ver ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ указатСля Π½Π° массив .

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: вызываСмая функция Π½Π΅ выдСляСт пространство для массива, ΠΈ Π΅ΠΉ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, поэтому количСство строк ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ.ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ Π½Π΅ выдСляСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ вызываСмая функция Π½Π΅ создаСт Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ копию массива, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ, которая Π±Ρ‹Π»Π° Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π°. Π¨ΠΈΡ€ΠΈΠ½Π° массива ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π²Π°ΠΆΠ½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ количСство элСмСнтов, содСрТащихся Π² ΠΎΠ΄Π½ΠΎΠΉ строкС, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ компилятору, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строки. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ столбца COLS .

Π”Π²ΠΎΠΉΠ½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Π² C

ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву компилятором с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Ρ‚ΡŒ Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ twoDimArrayDblPtrVer.c ΠΈ Π΅Π΅ сгСнСрированный Π²Ρ‹Π²ΠΎΠ΄.

 / * ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: twoDimArrayDblPtrVer.c * /
#include 
#define ROWS 4
#define COLS 3
int main ()
{
    // ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠ· 4 строк ΠΈ 3 столбцов
    int ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° [ROWS] [COLS] = {{1, 2, 3},
                              {4, 5, 6},
                              {7, 8, 9},
                              {10, 11, 12}};
    int ** pmat = (int **) ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°;

    printf ("& matrix [0] [0] =% u \ n", & matrix [0] [0]);
    printf ("& pmat [0] [0] =% u \ n", & pmat [0] [0]);
    Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ 0;
}

Π’Π«Π₯ΠžΠ”
======
& matrix [0] [0] = 1245016
& pmat [0] [0] = 1 

Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив , ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ pmat относятся ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΡ… ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, указывая Π½Π° Ρ€Π°Π·Π½Ρ‹Π΅ мСста Π² памяти.Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ошибкой Β«Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ доступа ΠΊ памяти».

 printf ("pmat [0] [0] =% u \ n", pmat [0] [0]); 

И, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ догадались, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ эта ошибка Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π°Π² доступа? ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ячСйка памяти разымСновываСтся Π΄Π²Π° Ρ€Π°Π·Π°, поэтому Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π°Π² доступа. Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, массивы Π² C - это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ для ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Ρ… элСмСнтов. Доступ ΠΊ элСмСнтам массива ΠΈ ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

ПослСднСС слово

Π’ этом руководствС ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах Π² C, ΠΏΠΎΡ‡Π΅ΠΌΡƒ индСкс массива Π² C начинаСтся с нуля, ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… указатСлях ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивах.НадСюсь, Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»ΠΎΡΡŒ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ это руководство. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½Π°ΠΌ, Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ прСдлоТСния / ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ»ΠΈ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Π΅Ρ‚Π΅ΡΡŒ с ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ошибкой Π½Π° этой страницС. Бпасибо Π·Π° ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅!

Бписок Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹

  1. Essential C
  2. ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² C


ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов | Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Microsoft

  • 2 ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

ΠŸΠΎΡΡ‚Ρ„ΠΈΠΊΡΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках ( [] ), прСдставляСт собой индСксированноС прСдставлСниС элСмСнта ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° массива.Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса прСдставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ адрСсу , Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ постфиксного выраТСния , ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ выраТаСтся ΠΊΠ°ΠΊ

  постфикс-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ [Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅]
  

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, прСдставлСнноС постфиксным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ , являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ указатСля, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ массива, Π° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ являСтся Ρ†Π΅Π»Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Однако всС, Ρ‡Ρ‚ΠΎ трСбуСтся синтаксичСски, - это Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π»ΠΎ Ρ‚ΠΈΠΏ указатСля, Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ - цСлочислСнного Ρ‚ΠΈΠΏΠ°.Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ постфиксного выраТСния , Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² скобках Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ выраТСния ΠΈΠ»ΠΈ Β«Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса». НапримСр, это Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

  // one_dimensional_arrays.c
int sum, * ptr, a [10];
int main () {
   ptr = a;
   сумма = 4 [ΠΏΡ‚Ρ€];
}
  

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

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса вычисляСтся ΠΏΡƒΡ‚Π΅ΠΌ добавлСния цСлочислСнного значСния ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ указатСля ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ примСнСния ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° косвСнного обращСния ( * ). (Π‘ΠΌ. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ косвСнного обращСния ΠΈ адрСсации для обсуТдСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° косвСнного обращСния.) ЀактичСски, для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ выраТСния эквивалСнтны, прСдполагая, Ρ‡Ρ‚ΠΎ a являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, Π° b являСтся Ρ†Π΅Π»Ρ‹ΠΌ числом:

  a [b]
* (Π° + Π±)
* (Π± + Π°)
Π± [Π°]
  

Π’ соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ прСобразования для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° слоТСния (ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌΠΈ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ слоТСния»), Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ прСобразуСтся Π² смСщСниС адрСса ΠΏΡƒΡ‚Π΅ΠΌ умноТСния Π΅Π³ΠΎ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Ρ‚ΠΈΠΏΠ°, адрСсованного ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ строка относится ΠΊ массиву Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ int . Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса выраТСния line [i] :

  1. ЦСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i умноТаСтся Π½Π° количСство Π±Π°ΠΉΡ‚ΠΎΠ², ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠ°ΠΊ Π΄Π»ΠΈΠ½Π° элСмСнта int . ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i прСдставляСт i int ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ.

  2. Π­Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ добавляСтся ΠΊ исходному Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ указатСля ( строка, ), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ смСщСн Π½Π° i int ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ ΠΎΡ‚ строки .

  3. К Π½ΠΎΠ²ΠΎΠΌΡƒ адрСсу примСняСтся косвСнный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта массива Π² этой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ (ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятно, line [i] ).

ΠŸΠΎΠ΄ΡΡ‚Ρ€ΠΎΡ‡Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ строка [0] прСдставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта строки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ смСщСниС ΠΎΡ‚ адрСса, прСдставлСнного строкой , Ρ€Π°Π²Π½ΠΎ 0. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ строка [5] относится ΠΊ элСмСнт смСщСн Π½Π° ΠΏΡΡ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ ΠΎΡ‚ строки, ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚ΠΎΠΉ элСмСнт массива.

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ подстрочного индСкса:

ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов ΠΈ ΠΈΡ… использованиС | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C | Вопросы Π±Π°Π½ΠΊ

ΠžΡ‚Π²Π΅Ρ‚:

Бписку элСмСнтов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно ΠΎΠ΄Π½ΠΎ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся ΠΎΠ΄Π½ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом .

НапримСр:

Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΡΡ‚ΡŒ чисСл, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ это ΠΊΠ°ΠΊ:

 
int number [5];

  

ΠŸΡ€ΠΈ объявлСнии Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ячССк памяти.

 
Π½ΠΎΠΌΠ΅Ρ€ [0]
Π½ΠΎΠΌΠ΅Ρ€ 1]
Π½ΠΎΠΌΠ΅Ρ€ 2]
число [3]
число [4]

  

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ значСния массиву ΠΊΠ°ΠΊ:

 
число [0] = 20;
число [1] = 25;
число [2] = 30;
число [3] = 35;
число [4] = 40;

  

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

НапримСр:

ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ

 
число [5] = 45;

  

, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ находится Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° массива number [5];

, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 5 элСмСнтов ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€Π° [O] Π΄ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° [4] .

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

  • НСобходимо ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Π½ΠΈΠ΅ количСства элСмСнтов
  • ΠœΠ°ΡΡΠΈΠ²Ρ‹ статичны. БтатичСский ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, выдСляСтся Π»ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π²ΠΎ врСмя компиляции ΠΈΠ»ΠΈ Π²ΠΎ врСмя выполнСния, ΠΈΡ… ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π° ΠΈΠ»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π°.
  • ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ элСмСнты массива хранятся Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ячСйках памяти, вставка ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠžΡ‚Π²Π΅Ρ‚:

Как ΠΈ любая другая пСрСмСнная, массивы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΡ… использованиСм. Бинтаксис объявлСния массива:

 
Ρ‚ΠΈΠΏ vriable-name [Ρ€Π°Π·ΠΌΠ΅Ρ€];

  

Π’ΠΈΠΏ опрСдСляСт Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтов массива, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ int , char , float ΠΈ size ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ максимальноС количСство элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ массива.

НапримСр:

 
int Marks [90];

  

Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΠΈ массивом, содСрТащим 90 Ρ†Π΅Π»Ρ‹Ρ… чисСл. Допустимы Π»ΡŽΠ±Ρ‹Π΅ индСксы ΠΎΡ‚ 0 Π΄ΠΎ 89.

Π”Π΅Ρ€Π΅Π²ΡŒΡ языков C, строки символов ΠΊΠ°ΠΊ массивы символов.

НапримСр:

 
Имя символа [11];

  

Π”Π΅Π»Π°Π΅Ρ‚ имя ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ массива символов, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 11 символов.ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ "Uttarakahnd" , это Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

НулСвой символ '\ 0' ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ это Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ строки. ΠŸΡ€ΠΈ объявлСнии ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… массивов ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹
Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт пространства для Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ символа

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

ПослС объявлСния массива Π΅Π³ΠΎ элСмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Β«ΠœΡƒΡΠΎΡ€Β» . ΠœΡ‹
ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты массива ΠΊΠ°ΠΊ:

 
Ρ‚ΠΈΠΏ имя-массива [Ρ€Π°Π·ΠΌΠ΅Ρ€] = {список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ};

  

ЗначСния Π² спискС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ запятыми.

НапримСр:

 
Ρ†Π΅Π»ΠΎΠ΅ число [13] = {0,0,0};

  

ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ массив Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ присвоит ноль ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту.

Если количСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² спискС мСньшС количСства элСмСнтов, Ρ‚ΠΎ инициализируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это количСство элСмСнтов. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Π½ΡƒΠ»Π΅Π½Ρ‹ автоматичСски.

НапримСр:

 
Ρ†Π΅Π»ΠΎΠ΅ число [5] = {1,2,3}

  

автоматичСски ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ элСмСнта значСниями 1,2,3, Π° ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Π΄Π²Π° элСмСнта - Π½ΡƒΠ»Π΅ΠΌ.


ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² Java

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½Π° Java - Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассмотрим всС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ описания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½Π° Java с подходящими ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ†Π°ΠΌΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

  • Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄
  • Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сканСра
  • ИспользованиС строки

Массив - это Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ элСмСнтов ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ массивС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java.

ВсС, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ. ΠŸΡ€ΠΎΡ‰Π΅ говоря, это Π΄Π»ΠΈΠ½Π° Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ касаСтся массива, ΠΎΠ΄Π½ΠΎ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ мСстополоТСния ΠΈΠ»ΠΈ индСкса.

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java - это массив с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… с ΠΎΠ΄Π½ΠΈΠΌ индСксом.

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π²ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ массивС.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ располоТСниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ соотвСтствСнно.

  • Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ массив.

Как Π²ΠΈΠ΄Π½ΠΎ, Ρ‚Ρ€ΠΈ элСмСнта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ пСрСчислСны ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ пСчатаСтся ΠΊΠ°ΠΊ 10 20 30 соотвСтствСнно Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… строках, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² Java для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив - стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄

class OnedimensionalStandard

{

public static void main (String args [])

{

int [] a = new int [3]; // объявлСниС

a [0] = 10; // инициализация

a [1] = 20;

a [2] = 30;

// ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹ΠΉ массив

System.out.println ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π΅ΡΡ‚ΡŒ");

System.out.println (a [0]);

System.out.println (a [1]);

System.out.println (a [2]);

}

}

Π’Ρ‹Ρ…ΠΎΠ΄:

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

10

20

30

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ сканСра
  1. Π‘Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄Π»ΠΈΠ½Ρƒ массива ΠΊΠ°ΠΊ sc.nextInt () ΠΈ сохранитС Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ len ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ массив int [len].

2) Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ элСмСнты Π² массивС ΠΎΡ‚ i = 0 Π΄ΠΎ i <Π΄Π»ΠΈΠ½Π° массива, ΠΏΡ€ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅ элСмСнт с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ sc.nextInt () ΠΈ сохранитС элСмСнт ΠΏΠΎ индСксу a [i].

3) ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ элСмСнты массива для Ρ†ΠΈΠΊΠ»Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚ i = 0 Π΄ΠΎ i <Π΄Π»ΠΈΠ½Π° массива Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ элСмСнт массива a [i].

1

2

3

4

5

6

7

8

9

10

11

12

13

14

14

18

19

20

21

22

ΠΈΠΌΠΏΠΎΡ€Ρ‚ java.util. *;

class OnedimensionalScanner

{

public static void main (String args [])

{

int len;

Scanner sc = Π½ΠΎΠ²Ρ‹ΠΉ сканСр (System.in);

System.out.println ("Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π»ΠΈΠ½Ρƒ массива:");

len = sc.nextInt ();

int a [] = new int [len]; // объявлСниС

System.out.print ("Enter" + len + "Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ для сохранСния Π² массивС: \ n");

для (int i = 0; i

{

a [i] = sc.nextInt ();

}

System.out.print (Β«Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π² массивС: \ nΒ»);

для (int i = 0; i

{

System.out.print (a [i] + "");

}

}

}

Π’Ρ‹Ρ…ΠΎΠ΄:

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π»ΠΈΠ½Ρƒ массива:

4

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ 4 элСмСнта для сохранСния Π² массивС:

1

2

3

4

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π² массивС:

1 2 3 4

ИспользованиС Ρ†ΠΈΠΊΠ»Π° For - ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

class OnedimensionalLoop

{

public static void main (String args [])

{

int a [] = {10,20,30,40,50}; // объявлСниС ΠΈ инициализация

System.out.println ("Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΡΠ²Π»ΡΡŽΡ‚ΡΡ: \ n");

для (int i = 0; i

{

System.out.println ("a [" + i + "]:" + a [i]);

}

}

}

Π’Ρ‹Ρ…ΠΎΠ΄:

ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ элСмСнты массива:

a [0]: 10

a [1]: 20

a [2]: 30

a [3]: 40

a [4]: ​​50

ИспользованиС строки
  1. ΠœΡ‹ объявили ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ строковый массив с элСмСнтами strings.

2) Для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ строк ΠΈΠ· массива строк. для i = ΠΎΡ‚ 0 Π΄ΠΎ i <Π΄Π»ΠΈΠ½Π° строки print string с индСксом str [i].

class OneDimensionString

{

public static void main (String [] args)

{

// объявляСм ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ массив ΠΎΠ΄Π½ΠΎΠ³ΠΎ измСрСния

String [] str = new String [] {"ΠΎΠ΄ΠΈΠ½", "Π΄Π²Π° ", "Ρ‚Ρ€ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅"};

БистСма.out.println ("Π­Ρ‚ΠΎ элСмСнты ΠžΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.");

для (int i = 0; i

{

System.err.println (str [i] + "");

}

}

}

Π’Ρ‹Ρ…ΠΎΠ΄:

Π­Ρ‚ΠΎ элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

ΠΎΠ΄ΠΈΠ½

Π΄Π²Π°

Ρ‚Ρ€ΠΈ

Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅

Fortran 77 Tutorial

Fortran 77 Tutorial

10.ΠœΠ°ΡΡΠΈΠ²Ρ‹

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

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

Π‘Π°ΠΌΡ‹ΠΉ простой массив - это ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ просто ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ хранящихся Π² памяти.Для НапримСр, дСкларация

      настоящий Π° (20)
 

ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ массив Π΄Π»ΠΈΠ½ΠΎΠΉ 20. Π’ΠΎ Π΅ΡΡ‚ΡŒ состоит ΠΈΠ· 20 Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл, Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ хранящихся Π² памяти. К ΠΏΠΎ соглашСнию, массивы Fortran ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ 1 ΠΈ Π²Ρ‹ΡˆΠ΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ число Π² массивС обозначаСтся (1), Π° послСднСС ΠΏΠΎ a (20). Однако Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ индСкса для Π²Π°ΡˆΠΈΡ… массивов с использованиСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ синтаксиса:

      Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ b (0:19), странный (-162: 237)
 

Π—Π΄Π΅ΡΡŒ b Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ a ΠΈΠ· Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ индСкс Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΡ‚ 0 Π΄ΠΎ 19.странный прСдставляСт собой массив Π΄Π»ΠΈΠ½Ρ‹ 237 - (- 162) +1 = 400.

Π’ΠΈΠΏ элСмСнта массива ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ ΠΈΠ· основных Π΄Π°Π½Π½Ρ‹Ρ…. Ρ‚ΠΈΠΏΡ‹. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:

      Ρ†Π΅Π»ΠΎΠ΅ число i (10)
      логичСский Π°Π° (0: 1)
      двойная Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ x (100)
 

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ. Π’Ρ‹ ΡΡΡ‹Π»Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π° i-ΠΉ элСмСнт массива a Ρ‡Π΅Ρ€Π΅Π· a (i). Π’ΠΎΡ‚ сСгмСнт ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранятся 10 ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… чисСл Π² массив sq:

      Ρ†Π΅Π»ΠΎΠ΅ число i, sq (10)

      ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ 100 я = 1, 10
         sq (я) = я ** 2
  100 ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ
 

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

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

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Π΅. ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставлСны Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. НапримСр, дСкларация

      Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ A (3,5)
 

опрСдСляСт Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 3 * 5 = 15 Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл. это ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΌ индСксС ΠΊΠ°ΠΊ ΠΎΠ± индСксС строки, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°ΠΊ индСкс столбца.ΠžΡ‚ΡΡŽΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

   (1,1) (1,2) (1,3) (1,4) (1,5)
   (2,1) (2,2) (2,3) (2,4) (2,5)
   (3,1) (3,2) (3,3) (3,4) (3,5)
 

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΌΠΎΠ³ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ индСксы Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½. ΠžΠ±Ρ‰ΠΈΠΉ синтаксис объявлСний:

       имя (low_index1: hi_index1, low_index2: hi_index2) 
 

Π’ΠΎΠ³Π΄Π° ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π±ΡƒΠ΄Π΅Ρ‚

       size = (hi_index1-low_index1 + 1) * (hi_index2-low_index2 + 1) 
 

Π’ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅ довольно часто ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ массивы, большС, Ρ‡Π΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ.(Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ динамичСского распрСдСлСния памяти.) Π­Ρ‚ΠΎ прСкрасно ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

      Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ A (3,5)
      Ρ†Π΅Π»ΠΎΠ΅ число i, j
c
c ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ этого массива 3 Π½Π° 3.
c
      ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ 20 j = 1, 3
         ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ 10 я = 1, 3
            Π° (я, j) ​​= Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ (я) / Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ (j)
   10 ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ
   20 ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ
 

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΏΠΎΠ΄ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ A (1: 3,4: 5) Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹. НС Π½Π°Π΄ΠΎ ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ эти элСмСнты ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½ΡƒΠ»Ρ‘ΠΌ компилятором (Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ компиляторы это Π΄Π΅Π»Π°ΡŽΡ‚, Π½ΠΎ Π½Π΅ всС).

Π€ΠΎΡ€ΠΌΠ°Ρ‚ хранСния Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

Fortran Ρ…Ρ€Π°Π½ΠΈΡ‚ массивы Π±ΠΎΠ»Π΅Π΅ высокой размСрности ΠΊΠ°ΠΊ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ элСмСнтов. Π’Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массивы хранятся ΠΏΠΎ столбцу . Π˜Ρ‚Π°ΠΊ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ элСмСнт массива (1,2) Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° элСмСнтом (3,1). Π—Π°Ρ‚Π΅ΠΌ слСдуСт ΠΎΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ столбца, Π·Π°Ρ‚Π΅ΠΌ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ столбСц ΠΈ Ρ‚. Π΄. Π½Π°.

Рассмотрим Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ 3 Π½Π° 3 ΠΏΠΎΠ΄ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° массива 3 Π½Π° 5 A (3,5).9 интСрСсных элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ сохранСны Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… дСвяти ячСйках памяти, ΠΏΠΎΠΊΠ° послСдниС ΡˆΠ΅ΡΡ‚ΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ. Π­Ρ‚ΠΎ прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ² ΠΊΠ°ΠΊ для массива, Ρ‚Π°ΠΊ ΠΈ для ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Ρ…Ρ€Π°Π½ΠΈΠΌ Π² массивС. Однако часто Π²Π΅Π΄ΡƒΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π±ΡƒΠ΄Π΅Ρ‚ большС, Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°. Π’ΠΎΠ³Π΄Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π±ΡƒΠ΄Π΅Ρ‚ , Π° Π½Π΅ . Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ Π² памяти, Π΄Π°ΠΆΠ΅ Ссли массив являСтся Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΌ.Для НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ вмСсто этого Π±Ρ‹Π»ΠΎ объявлСно A (5,3). Π’ΠΎΠ³Π΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Π΅Ρ† ΠΎΠ΄Π½ΠΎΠ³ΠΎ столбца ΠΈ Π½Π°Ρ‡Π°Π»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ столбца (снова ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° 3 Π½Π° 3).

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слоТным, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ это довольно просто ΠΊΠΎΠ³Π΄Π° ΠΊ этому ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ°Π΅ΡˆΡŒ. Если Π²Ρ‹ ΡΠΎΠΌΠ½Π΅Π²Π°Π΅Ρ‚Π΅ΡΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ посмотритС, ΠΊΠ°ΠΊ вычисляСтся адрСс элСмСнта массива. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ массив Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ адрСс памяти, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π°Ρ‡Π°Π»ΠΎ массива, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ элСмСнт (1,1).АдрСс element (i, j) Ρ‚ΠΎΠ³Π΄Π° даСтся

        адрСс  [A (i, j)] =  адрСс  [A (1,1)] + (j-1) * lda + (i-1)
 

, Π³Π΄Π΅ lda - Π²Π΅Π΄ΡƒΡ‰Π΅Π΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ строковоС) ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ A. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ lda Π² Ρ†Π΅Π»ΠΎΠΌ отличаСтся ΠΎΡ‚ фактичСского Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. МногиС ошибки Fortran Π²Ρ‹Π·Π²Π°Π½Ρ‹ этим, поэтому ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ!

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

Fortran 77 позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ массивы Π΄ΠΎ сСми ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ.Бинтаксис ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ ΡΠ»ΡƒΡ‡Π°ΡŽ, поэтому ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° это врСмя.

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

БущСствуСт Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ объявлСния массивов Π² Fortran 77. выписки

      Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ A, x
      Ρ€Π°Π·ΠΌΠ΅Ρ€ x (50)
      Ρ€Π°Π·ΠΌΠ΅Ρ€ A (10,20)
 

эквивалСнтно

      вСщСствСнноС A (10,20), x (50)
 

Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° считаСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ.

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

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

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