Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Как ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

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

void ArrayFunction(int aNumbers[3]);

Π’Ρ‹Π·ΠΎΠ² Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΅ΠΉ нСпосрСдствСнно массива Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

void SomeFunction()
<
int aNumbers[] = < 1, 2, 3 >;
ArrayFunction(aNumbers);
>

ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² стСк. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ массива Π² Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ измСнСнию источника.

ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ массивы ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. Для этого просто Π½Π΅ спСцифицируйтС Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

void ArrayFunction(int aNumbers[]);

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Β«ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅Β»):

void ArrayFunction(int aNumbers[][3][2]);

Π’Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ производится Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС.

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

ΠŸΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ массив ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ. АргумСнтом Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с Ρ‚ΠΈΠΏΠΎΠΌ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтам массива. НапримСр:

void ArrayFunction(int *pNumbers);

Доступ ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с элСмСнтами массива, Ρ‚Π°ΠΊ ΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ адрСсной Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ:

void ArrayFunction(int *pNumbers)
<
pNumbers[0] = 10; // доступ ΠΊ элСмСнту 0
*(pNumbers + 1) = 20; // доступ ΠΊ элСмСнту 1
>

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹! ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ пСрСдаСтся Π½Π΅ копия Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½ΠΈΡ…, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π²Π΅Ρ€Π³Π½ΡƒΡ‚ исходный массив.

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

void SomeFunction()
<
int aNumbers[] = < 1, 2, 3 >;
ArrayFunction(aNumbers); // вСсь массив
ArrayFunction(&aNumbers[1]); // начиная со Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта
>

Π”Π°Π½Π½Ρ‹ΠΉ способ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ количСства доступных элСмСнтов Π² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ΠΈΠ»ΠΈ использованиС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° ΠΊΠΎΠ½Ρ†Π° массива.

ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΡΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ ΠΈΠ»ΠΈ ссылкой Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» массива. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ классы ΠΈΠ»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ классов ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ входят Π² состав популярных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² (QVector Π² Qt, CArray Π² MFC, std::vector Π² STL, ΠΈ Ρ‚.Π΄.).

Часто Π΄Π°Π½Π½Ρ‹Π΅ классы Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ нСявного совмСстного использования Π΄Π°Π½Π½Ρ‹Ρ… (implicit data sharing) с подсчСтом ссылок (reference counting), выполняя Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (copy on write). Π­Ρ‚ΠΎ позволяСт ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… рСсурсов Π΄Π°ΠΆΠ΅ Π² случаС ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² массивов ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:

void ArrayFunction(QVector oArray)
<
int nItemCount = oArray.count();
int nItem = oArray[0];
>

void SomeFunction()
<
QVector oArray(10);

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ массивов Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² языкС Π‘ΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ пСрСдаСтся Π½Π΅ сам массив, Π° адрСс массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ хранится Π² локальном ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ Π½Π° Π½Π΅Π³ΠΎ.

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ, Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ:

ΠŸΡ€ΠΈ этом ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ элСмСнта массива.

Π Π°Π·ΠΌΠ΅Ρ€ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ автоматичСски Π½Π΅ пСрСдаСтся, поэтому Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ массива Π·Π°Ρ€Π°Π½Π΅Π΅ (Π½Π° этапС компиляции) Π½Π΅ ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½, Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит количСство элСмСнтов Π² массивС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ number_of_elements:

void some_function(int array[], int number_of_elements);

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ массивы Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ show_array, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†ΠΈΠΊΠ» for для Π²Ρ‹Π²ΠΎΠ΄Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ массивов:

show_array.c

void show_array (int array [], int number_of_elements)
<
for ( int i = 0; i printf(“%d\t”, array[i]);
>
printf(“\n”);
>

int main()
<
int little_numbers[5] = <1, 2, 3, 4, 5>;
int big_numbers[3] = <1000, 2000, 3000>;
show_array(little_numbers, 5);
show_array(big_numbers, 3);
>

Массив просто пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ (Π° Π΅Π³ΠΎ имя β€” это адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ количСство элСмСнтов, содСрТащихся Π² массивС:

ИзмСнСниС массива ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ значСния элСмСнтов ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?

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

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ get_values, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ значСния массиву numbers:

values_from_keyboard.c

#include
void read_array(int array[], int number_of_elements)
<
for(int i = 0; i read_array (numbers, 3); //массив Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½!
printf(” ЗначСния массива\n”);
for (int i = 0; i printf(” numbers [%d] \n”, i);
>

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ массив Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, Π° функция присваиваСт массиву элСмСнты.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнты массива, Ссли Π΅ΠΉ это Π½ΡƒΠΆΠ½ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массива Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ массива Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Π΅Π· использования класса ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, являСтся Π»ΠΈ массив Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, получаСтся (формируСтся) Π² Π½Π΅ΠΉ ΠΈΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ (пСрСдаётся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, прСобразуСтся Π² Π½Π΅ΠΉ ΠΈ возвращаСтся Π² Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ‹Π·ΠΎΠ²Π°), ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹.

Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° объявлСния массива Π² скобках Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ (ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ΅) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

* c ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ явных ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… констант (const n=10; const m=10) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΎΠ΄Π½Ρƒ ΠΈΠ»ΠΈ ΠΎΠ±Π΅ размСрности:

void FunMatr1(…, int M[10],int size1,…).//для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ

void FunMatr2(…, int M[10][10],int size1,…). //для Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ

Π³Π΄Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π»ΠΈΠ±ΠΎ всС (Ρƒ нас 10) строки, Π»ΠΈΠ±ΠΎ мСньшСС ΠΈΡ… количСство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ (size1);

* ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π»Π΅Π²ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ свободной, Ρ‚. Π΅. вмСсто количСства строк оставляСм пустыС скобки:

void FunMatr1(…, int M[],int size1,…).//для ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ

void FunMatr2(…,int M[][10], int size1…). //для Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ

Π³Π΄Π΅ количСство столбцов Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° количСство строк пСрСдаётся Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° (size1), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ»Π°Ρ….

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅.

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

2) Π’ ΠΎΠ±ΠΎΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство столбцов (Ρƒ нас 10). Π•Π³ΠΎ (size2), ΠΊΠ°ΠΊ ΠΈ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ (size1), ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ‚Π΅Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

void FunMatr2(…, int M[][10], int size1, int size2…);

Π’ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρƒ нас Π² main) объявляСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ int A[10][10] (ΠΈΠ»ΠΈ int A[n][m]), учитывая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: количСство столбцов ΠΏΡ€ΠΈ объявлСнии Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшС, Ρ‡Π΅ΠΌ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, int A[5][10]. ΠŸΡ€ΠΈ этом ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡΡ‚ΡŒ строк (Π° Π½Π΅ 10).

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² любом случаС ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π±Π΅Π· указания размСрности ΠΈ Ρ‚ΠΈΠΏΠ° Π΅Ρ‘ элСмСнтов, Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ количСство строк ΠΈ, Ссли Π½Π°Π΄ΠΎ, столбцов:

Π³Π΄Π΅ 5 β€” количСство ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… строк, 6 β€” количСство ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… столбцов.

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅.

1) ΠŸΡ€ΠΈ использовании массива Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ фактичСски пСрСдаётся Π½Π΅ сам массив, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅Π³ΠΎ (адрСс массива), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ ячСйки массива (с индСксом 0). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ массив ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ этим самым ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΈ массив A Π² основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Боставим Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Π²Π²ΠΎΠ΄Π°, Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ сортировки строк ΠΏΠΎ элСмСнтам k –го столбца, Π³Π΄Π΅ k ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом содСрТимоС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки Π½Π΅ мСняСтся.

const int m=10;//глобальная константа для описания количСства столбцов

void out_mas2(double x[][m], int, int );//Π²Ρ‹Π²ΠΎΠ΄ массива

int k;//Π½ΠΎΠΌΠ΅Ρ€ столбца для сортировки

while (1) // ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²ΠΎΠ΄Π°

if (x[m][k] n1max) n1=n1max;

if (n2 n2max) n2=n2max;

/* Поля класса (ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΈ Π΅Ρ‘ Π΄Π²Π΅ размСрности) Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π΅ записываСм! РазмСрности ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструктора, Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° INP1.*/

//Π’Π²ΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€Π° столбца, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ,

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΡΡ‚Π°Ρ‚ΡŒ программистом

ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ основам программирования Π½Π° C для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ².

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹

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

YoungCoder Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈ Π½Π° StepikΠ΅. Π—Π°ΠΏΠΈΡΡ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ: https://vk.cc/75rISy

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° курс, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Π‘Ρ‚Π΅ΠΏΠΈΠΊΠ΅: https://vk.cc/75rIC4

Π­Ρ‚ΠΎ моя личная ссылка-ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° Stepik для вас. Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡΡΡŒ ΠΏΠΎ этой ссылкС, Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡΡΡŒ Π½Π° курсы ΠΈ Ρ€Π΅ΡˆΠ°Ρ Π·Π°Π΄Π°Ρ‡ΠΈ, Π’Ρ‹ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚Π΅ Π°Π²Ρ‚ΠΎΡ€Ρƒ Π΄Π°Π½Π½ΠΎΠ³ΠΎ сайта ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ участиС Π² конкурсС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Stepik! ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ конкурса здСсь: https://vk.cc/75rKuS

Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅, 6 октября 2013 Π³.

ЗанятиС 18. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ массива ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π”ΠΎΠ±Ρ€Ρ‹ΠΉ Π²Π΅Ρ‡Π΅Ρ€ Π΄Ρ€ΡƒΠ·ΡŒΡ. ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами ΠΈ указатСлями.

БСгодня научимся ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ массив Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ массив ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ этого ΡƒΡ€ΠΎΠΊΠ° “ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ”.

Π˜Ρ‚Π°ΠΊ, Π½Π°Ρ‡Π½Π΅ΠΌ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡƒΠ½ΠΊΡ‚Π°. ΠŸΡƒΡΡ‚ΡŒ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ массив Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ‚Π°ΠΌ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Ну допустим вывСсти Π΅Π³ΠΎ элСмСнты Π½Π° экран. Π’ΡƒΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°.
1. Π£ нас статичСский массив.
2. Π£ нас динамичСский массив.

Π’ зависимости ΠΎΡ‚ этого ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ»ΡΡΠ°Ρ‚ΡŒ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ случай. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ статичСского массива.

Для опрСдСлСнности Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ массив символов. НапишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ строку ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π΅Ρ‘ Π½Π° экран.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ рассмотрим Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, которая эта функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΈ Π΅ΡΡ‚ΡŒ массив, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ послС ΠΈΠΌΠ΅Π½ΠΈ пишСм ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки. ИмСнно ΠΎΠ½ΠΈ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ это Π½Π΅ просто нСкая пСрСмСнная Π° Ρ†Π΅Π»Ρ‹ΠΉ массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π’ скобках, Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива. Π‘ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒΡŽ массива Π²ΠΎΠΎΠ±Ρ‰Π΅ всС Π½Π΅ Ρ‚Π°ΠΊ просто. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π‘ΠΈ Π½Π΅ ΡƒΠΌΠ΅ΡŽΡ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌ массива. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π’ нашСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ n.

НапишСм ΡΠ°ΠΌΡƒΡŽ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² этом случаС, ΠΏΠΎ Π²ΠΈΠ΄Ρƒ, Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠœΡ‹ лишь ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π΅Π³ΠΎ имя ΠΈ всС. Π­Ρ‚ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Ρ‚Π°ΠΊ каТСтся. Но ΠΎΠ± этом Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ случай. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ динамичСского массива.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π΅ΡˆΠΈΠΌ Ρ‚Π°ΠΊΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. имССтся тСкстовый Ρ„Π°ΠΉΠ» input.txt. ΠŸΡƒΡΡ‚ΡŒ Π² Π½Π΅ΠΌ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строчкС записано Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число N Π½Π΅ прСвосходящСС 100. А Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… N строках записаны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ вСщСствСнныС числа. ΠŸΡƒΡΡ‚ΡŒ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ срСднСС арифмСтичСскоС всСх этих чисСл ΠΈ вывСсти.

Π£Π΄ΠΎΠ±Π½ΠΎ для хранСния чисСл завСсти динамичСский массив. Π₯отя, Π½Π° самом Π΄Π΅Π»Π΅, Π² этой Π·Π°Π΄Π°Ρ‡Π΅ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ просто Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ числа ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈ сразу Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ ΠΈΡ… срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Но ΠΊΠ°ΠΊ-Ρ‚ΠΎ я Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° Π±ΠΎΠ»Π΅Π΅ подходящСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

И Ρ‚Π°ΠΊ напишСм Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Π€ΠΎΡ‚ΠΎ Каким способом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ массив всСгда пСрСдаСтся Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ динамичСский массив, Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива. Π’ случаС ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива это Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Ρ€Π°Π·, Ρ‚.Π΅.
void sa_arr(float a[], int n)
Π½ΠΎ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ стоит. ΠŸΡ€ΠΈΡƒΡ‡Π°ΠΉΡ‚Π΅ΡΡŒ сразу ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ динамичСскиС массивы Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вСрнСмся ΠΊ нашим отличиям Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ вопросу.

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

НСсколько ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ нашС ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ИзмСним ΠΎΠ΄ΠΈΠ½ ΠΈΠ· элСмСнтов Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. И посмотрим, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ с исходным массивом.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² являСтся основным способом ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ функциями. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. Π’ Π‘++ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² осущСствляСтся двумя способами: ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΈ ΠΏΠΎ ссылкС. Π­Ρ‚ΠΎ опрСдСляСтся Π²ΠΈΠ΄ΠΎΠΌ объявлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ объявлСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ :

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎ ссылкС объявлСниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° прСдставляСт собой объявлСниС ссылки Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

Π­Ρ‚ΠΎΡ‚ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ссли функция Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π° нСсколько. НапримСр, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ ссылкС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Если трСбуСтся Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ const :

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ любого Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вСщСствСнного, структурой, пСрСчислСниСм, объСдинСниСм, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ), ΠΊΡ€ΠΎΠΌΠ΅ массива ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массивов Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Массив всСгда пСрСдаСтся ΠΏΠΎ адрСсу. ΠŸΡ€ΠΈ этом информация ΠΎ количСствС элСмСнтов массива тСряСтся, ΠΈ слСдуСт ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€:

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ способ выдСлСния памяти:

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΈΠΌΠ΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅Π΅. Для этого ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ Π΅ΠΌΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ взятия адрСса присваиваСтся адрСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΉ, ΠΏΡ€ΠΈ описании ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ( typedef ). МоТно ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массивы ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ мСню):

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²:

Π’ΠΈΠΏ указатСля ΠΈ Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая вызываСтся посрСдством Π½Π΅Π³ΠΎ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² точности.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ со значСниями ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Leave a Reply

Your email address will not be published. Required fields are marked *