Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

Бинтаксис объявлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
(* )( );

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ отобраТСния, которая примСняСт ΠΊΠΎ всСм элСмСнтам массива Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая пСрСдаётся Π΅ΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Когда ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ map, достаточно просто ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ (ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ указатСлями). Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ map, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° массив Ρ‚ΠΈΠΏΠ° void:

Π’ΠΎΡ‚ Π³Π΄Π΅ Π½Π°ΠΌ понадобились ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ‚ΠΈΠΏΠ° void. Π’Π°ΠΊ ΠΊΠ°ΠΊ map ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚ΠΎ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. Но Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, поэтому ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈΡ… Ρ‚ΠΈΠΏΠ° void. Ѐункция map ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° void (*)(void*), поэтому Π΅ΠΉ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.
ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: функция filter ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива, оставляя Π² Π½Ρ‘ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ элСмСнты, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ истину (ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚ – функция, которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истину ΠΈΠ»ΠΈ лоТь). Π‘Π½Π°Ρ‡Π°Π»Π° напишСм для массива Ρ‚ΠΈΠΏΠ° int:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ для массива Ρ‚ΠΈΠΏΠ° void

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

ПослСдний ΠΏΡ€ΠΈΠΌΠ΅Ρ€: функция сортировки вставками для массива Ρ‚ΠΈΠΏΠ° void. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ массива Π½Π΅ извСстСн, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сравнСния.

Массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

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

Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив динамичСски

Часто ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ становятся Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌΠΈ. Π Π°Π±ΠΎΡ‚Ρƒ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ, Ссли ввСсти Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ

Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: функция any Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1, Ссли Π² ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΌ массивС содСрТится хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ pred ΠΈ 0 Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

qsort ΠΈ bsearch

Ѐункция bsearch ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ поиск Π² отсортированном массивС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сравнСния, Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ функция qsort. Π’ случаС, Ссли элСмСнт Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° этот элСмСнт, Ссли элСмСнт Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ NULL.

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив

«НС Π² совокупности ΠΈΡ‰ΠΈ Сдинства, Π½ΠΎ Π² Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠΈ раздСлСния».
Козьма ΠŸΡ€ΡƒΡ‚ΠΊΠΎΠ².

Массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠ°ΠΊ структура Π΄Π°Π½Π½Ρ‹Ρ…

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 01. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 01. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 01. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Если это Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… контСкстного опрСдСлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠœΠ½ΠΎΠ³ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массивов ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ нСскольким ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ:

Β· c Π°ΠΌ массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΠΊΠ°Π·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ссылки (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ) ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½Ρ‹ статичСски (Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹), Π»ΠΈΠ±ΠΎ динамичСски созданы Π²ΠΎ врСмя Π΅Π΅ выполнСния;

Β· двоякая интСрпрСтация указатСля ΠΊΠ°ΠΊ указатСля Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ Π½Π° массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (строку), позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ Π‘Π” – массивы ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ – массивы ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° массивы (строки) Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…;

Β· ΡƒΠΊΠ°Π·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Β«ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽΒ» структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ΄Π½Π°ΠΊΠΎ массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹), ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ составными частями Π΄Ρ€ΡƒΠ³ΠΈΡ… структур Π΄Π°Π½Π½Ρ‹Ρ….

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

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 03. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 03. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 03. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Напомним, Ρ‡Ρ‚ΠΎ Π² Π‘ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ мСсто Π΄Π²Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ указатСля, Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π²ΠΈΠ΄Ρƒ примСняСмых ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ (Ρ‚.Π΅. Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² контСкстС Π΅Π³ΠΎ использования):

Β· Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ указатСля ΠΊΠ°ΠΊ ссылки Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ соотвСтствуСт опСрация косвСнного обращСния ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ * pp ;

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ допускаСт Ρ†Π΅Π»Ρ‹Ρ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ этом для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ создана (ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°) своя структура Π΄Π°Π½Π½Ρ‹Ρ…. ПолоТСниС усугубляСтся Π΅Ρ‰Π΅ ΠΈ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π° соотвСтствиСм структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ опСрациями Π½Π°Π΄ Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ программист (компилятор этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚).

int a=5, b=10; int *p=&a; int **pp=&p;

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 04. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 04. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 04. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

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

int a[10]=5, b[10]=10; int *p=a; int **pp=&p;

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 05. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 05. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 05. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ довольно экзотичСн – ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π’ выраТСниях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Π°ΠΊΠΎΠΉ структурС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹Π΅ скобки, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ опСрация косвСнного обращСния Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ индСксации Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ.

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 06. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 06. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 06. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

int a=5, b=10, с =15; int *p[]=<&a,&b,&c,NULL>; int **pp=p;

for (int s=0,i=0;i s=s+*pp[i];

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

for (int j=0;j s=s+pp[i][j];

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 07. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 07. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 07. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

БтатичСскиС ΠΈ динамичСскиС массивы ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

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

Π£ΠΊΠ°Π·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ динамичСски, ΠΈΡ… адрСса Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ статичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

for (i=0; i *p = i; pd[i] = p; >

for (i=0; i // ΠΈΠ· 20 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int*

pp[i] = p; // ΠΌΠΎΠΆΠ½ΠΎ pp[i]=new int; *pp[i]=i;

Массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ЀизичСский ΠΈ логичСский порядок

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивом ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° контСкста:

//— Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива ΠΈ массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

void sort1 (double d[],int sz)<

void sort2 (double *pd[])<

for ( k=0, i=0; pd[i+1]!=NULL;i++)

if (* pd [ i ] > * pd [ i +1]) // Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

c = pd[i]; pd[i] = pd[i+1];pd[i+1] = c; k = 1; >

ДинамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹)

//——— ДинамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

// Π½Π° упорядочСнныС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты исходного массива

double **create( double in[], int n)<

double **pp = new double *[m+1]; // Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π”ΠœΠ£

for (i=0,j=0; i // Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°

if (in[i]>0) pp[j++]=&in[i]; // ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт

ДинамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° массивы ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

if (fd==NULL) return NULL;

fscanf(fd,»%d%d»,&n,&m); // Π§Ρ‚Π΅Π½ΠΈΠ΅ размСрностСй

double **pp=new double*[n]; // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π”ΠœΠ£ ΠΏΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ размСрности

pp[i]=new double[m]; // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… Π”Πœ (строк)

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

void destroy(double **pp,int n)<

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 10. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 10. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 10. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

// Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ массивы (части Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ массива)

void sort(int a[], int n); // любая сортировка ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

void big_sort(int A[], int N)<

int *L=new int[n],*C=new int[N]; // массив размСрностСй частСй

L[n-1]=N-n*(n-1); // Π Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ послСднСго массива

for (i=0; i // Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° частСй

if (L[j]==0) continue; // ΠŸΡ€ΠΎΠΏΡƒΡΠΊ слитых строк

C[i] = *B[k]; // ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ элСмСнта

B[k]++; // Π‘Π΄Π²ΠΈΠ³ k- Π³ΠΎ указатСля

for (i=0; i // Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ тСкста. ДинамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° строки

Массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° строки, для размСщСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив символов (массив строк).

pc = new char *[101]; // ДинамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

for ( i =0; i i ++) pc [ i ] = cc [ i ]; // Π½Π° строки статичСского массива

p[i] // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° i-ю строку Π² массивС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

p[i][j] // j-ΠΉ символ Π² i-ΠΎΠΉ строкС массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

A [i][j] // j-ΠΉ символ Π² i-ΠΎΠΉ строкС Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

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

//— Массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° отсортированныС ΠΏΠΎ Π΄Π»ΠΈΠ½Π΅ слова

int my_strlen(char *p)<

char **SortedWords(char *p)<

for (q=p; *q!=0; q++) // ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ количСства слов ΠΏΠΎ ΠΊΠΎΠ½Ρ†Π°ΠΌ слов

char **qq=new char*[nw+1]; // Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π”ΠœΠ£ Π½Π° строки (символы строки)

if (*p!= ‘ ‘) qq[nw++]=p; // Π‘Ρ‚Ρ€ΠΎΠΊΠ° начинаСтся со слова

if (p[0]!=’ ‘ && p[-1]==’ ‘) // Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² строкС

k=0; // с использованиС собствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

for (int i=0; i // сравнСния слов (Π΄ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°)

char *g=qq[i]; qq[i]=qq[i+1]; qq[i+1]=g;

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° размСрности динамичСского массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

//——- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π”ΠœΠ£ ΠΈΠ· строк Ρ„Π°ΠΉΠ»Π°

char * *loadfile(FILE *fd)<

int n,sz=SIZE0; // Кол-Π²ΠΎ строк ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π”ΠœΠ£

char **pp = new char*[sz]; // Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π”ΠœΠ£

for (n=0;fgets(str,1000,fd)!=NULL; n++)<

pp[n]=strdup(str); // Копия строки Π² Π”Πœ

sz*=2; // ΡƒΠ΄Π²ΠΎΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ

pp[n] = NULL; // ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΠΌ

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

2. Ѐункция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ строку тСкста ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ динамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° слова. КаТдоС слово копируСтся Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ массив Π² динамичСской памяти.

3. Ѐункция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ строку, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ самый Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π² скобках ΠΈ Π²Ρ‹Ρ€Π΅Π·Π°Π΅Ρ‚ Π΅Π³ΠΎ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ останСтся скобок. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ остаток строки Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² динамичСском массивС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

4. Ѐункция Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² строкС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, симмСтричныС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа, Π΄Π»ΠΈΠ½ΠΎΠΉ 7 ΠΈ Π±ΠΎΠ»Π΅Π΅ символов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, » abcdcba «) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ динамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΊΠΎΠΏΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ².

5. Ѐункция Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² строкС ΠΏΠ°Ρ€Ρ‹ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², содСрТащих ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… символов Π΄Π»ΠΈΠ½ΠΎΠΉ Π±ΠΎΠ»Π΅Π΅ 3 (ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°) ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ динамичСский массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΊΠΎΠΏΠΈΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ².

6. Π‘Ρ‚Π΅ΠΊ модСлируСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ динамичСского массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ массивы размСрности N Ρ†Π΅Π»Ρ‹Ρ…. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСка – Π΄Π²Π° индСкса – Π² массивС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ массивС. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ push ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ массива Π² массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ добавляСтся Π½ΠΎΠ²Ρ‹ΠΉ, Ссли опСрация pop ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌΡƒ массиву, Ρ‚ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ утилизуСтся.

7. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ модСлируСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ динамичСского массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ массивы размСрности N Ρ†Π΅Π»Ρ‹Ρ…. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈ послСдний элСмСнты ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ – Π΄Π²Π° индСкса – Π² массивС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ массивС. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ добавлСния ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ массива Π² массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ добавляСтся Π½ΠΎΠ²Ρ‹ΠΉ, Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ извлСчСния – ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌΡƒ массиву Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ утилизуСтся (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² массивС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΡΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ).

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. 062 09. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-062 09. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 062 09. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Вопросы Π±Π΅Π· ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сформулируйтС дСйствиС, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ Π½Π°Π΄ массивом ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для статичСских Π΄Π°Π½Π½Ρ‹Ρ….

double * F(double *p[], int k) <

for ( int i=0; p[i]!=0; i++) ; // ВСкущая Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

double *q=p[k]; // Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ k- Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

return q;> // k-Ρ‹ΠΉ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ

for (int i=0; pp[i]!=NULL;i++) printf(» %2.0lf»,*pp[i]);

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

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ссылки ΠΈ массивы Π² C ΠΈ C++: Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π°Π΄ i

Π’ этом постС я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ понятия Π² C ΠΈ C++, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ссылки ΠΈ массивы. Π’ частности, я ΠΎΡ‚Π²Π΅Ρ‡Ρƒ Π½Π° вопрос, Ρ‚Π°ΠΊ ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивы C указатСлями ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΈ прСдполоТСния

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ссылки

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ. πŸ™‚ Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ это Π·Π½Π°Π΅Ρ‚Π΅. Напомню лишь ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ (всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ находящимися Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, main):

Бсылки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ссылок. Бсылки β€” это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ синтаксисом ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ отличиями, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ дальшС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ ссылки вмСсто ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

Если слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° присваивания стоит ссылка, Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ…ΠΎΡ‚ΠΈΠΌ ΠΌΡ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ самой ссылкС ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° ссылаСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΎΠ΅ присваиваниС всСгда присваиваСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π° Π½Π΅ ссылкС. Но это Π½Π΅ относится ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ссылки: инициализируСтся, разумССтся, сама ссылка. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ссылки Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ саму, Ρ‚. Π΅. ссылка всСгда постоянна (Π½ΠΎ Π½Π΅ Π΅Ρ‘ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚).

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ссылки ΠΈ lvalue β€” это Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ смыслС ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ порассуТдаСм. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ lvalue? Π­Ρ‚ΠΎ Π½Π΅Ρ‡Ρ‚ΠΎ, Ρ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ. Π’. Π΅. это Π½Π΅ΠΊΠΎΠ΅ фиксированноС мСсто Π² памяти, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ. Π’. Π΅. адрСс. Π’. Π΅. ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ссылка (ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ссылки β€” это Π΄Π²Π° синтаксичСски Ρ€Π°Π·Π½Ρ‹Ρ… способа Π² C++ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ понятиС адрСса). ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ скорСС ссылка, Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚. ΠΊ. ссылку ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ присваиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ссылка. Π—Π½Π°Ρ‡ΠΈΡ‚, lvalue β€” это ссылка.

А Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ссылка? Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· синтаксисов для адрСса, Ρ‚. Π΅., ΠΎΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ, Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡ‚ΡŒ. И ссылку ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства. Π—Π½Π°Ρ‡ΠΈΡ‚, ссылка β€” это lvalue.

ОкСй, Π½ΠΎ вСдь (ΠΏΠΎΡ‡Ρ‚ΠΈ любая) пСрСмСнная Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства. Π—Π½Π°Ρ‡ΠΈΡ‚, (такая) пСрСмСнная β€” ссылка? ΠŸΠΎΡ‡Ρ‚ΠΈ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ собой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ β€” ссылка.

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

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ особый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для lvalue (Ρ‚. Π΅. ссылка) сущСствуСт Π΄Π°ΠΆΠ΅ ΠΈ Π² C. ИмСнно Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ дальшС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ понятиС ссылки нСльзя Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ синтаксичСски Π² C, ссылку нСльзя ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ «любоС lvalue β€” ссылка» β€” Ρ‚ΠΎΠΆΠ΅ моя Π²Ρ‹Π΄ΡƒΠΌΠΊΠ°. А Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «любая ссылка β€” lvalueΒ» β€” Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΉ, ΠΎΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ (разумССтся, ссылка Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ссылкой Π½Π° измСняСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ присваиваниС).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ * ΠΈ &. Наши соглашСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎ-Π½ΠΎΠ²ΠΎΠΌΡƒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ * ΠΈ &. Π’Π΅ΠΏΠ΅Ρ€ΡŒ становится понятно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: опСрация * ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ (ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ это Π±Ρ‹Π»ΠΎ всСгда извСстно) ΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. & примСняСтся всСгда ΠΊ ссылкС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, * ΠΈ & ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ссылки Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°. Π’. Π΅. ΠΏΠΎ сути ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈ лишь Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ сущности ΠΎΠ΄Π½ΠΎΠ³ΠΎ синтаксиса Π½Π° сущности Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ! Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, & Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ взятия адрСса: ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° лишь ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ адрСсу, просто ΠΎΠ½Π° мСняСт синтаксичСскоС Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ этого адрСса.

Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ &*EXPR (здСсь EXPR β€” это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€) эквивалСнтно EXPR всСгда, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл (Ρ‚. Π΅. всСгда, ΠΊΠΎΠ³Π΄Π° EXPR β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ), Π° *&EXPR Ρ‚ΠΎΠΆΠ΅ эквивалСнтно EXPR всСгда, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл (Ρ‚. Π΅. ΠΊΠΎΠ³Π΄Π° EXPR β€” ссылка).

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

Π˜Ρ‚Π°ΠΊ, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… β€” массив. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ массивы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ константой Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции Π² C89 ΠΈ C++98. ΠŸΡ€ΠΈ этом Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚ΠΎΡΡ‚ΡŒ число, пустыС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ.

Ρ‚ΠΎ, ΠΎΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ, мСсто для массива Π±ΡƒΠ΄Π΅Ρ‚ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒΡΡ прямо Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры, ΠΈ sizeof ΠΎΡ‚ этой структуры Π±ΡƒΠ΄Π΅Ρ‚ это ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, я вас ΡƒΠ±Π΅Π΄ΠΈΠ», Ρ‡Ρ‚ΠΎ массив β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ массив, Π° Π½Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Ρ‘. ΠžΡ‚ΠΊΡƒΠ΄Π° Ρ‚ΠΎΠ³Π΄Π° бСрётся вся эта ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями ΠΈ массивами? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ имя массива ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… опСрациях прСобразуСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΅Π³ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт.

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ массива Π² void * ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΌΡƒ == Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ этого ΠΈΠΌΠ΅Π½ΠΈ Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, поэтому:

Π’ΠΈΠΏΡ‹ Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Массив нСльзя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Если Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ int x[2] ΠΈΠ»ΠΈ int x[] Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтно int *x ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (sizeof ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Ρƒ указатСля). ΠŸΡ€ΠΈ этом Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’Ρ‹ запросто ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ int x[2] ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° массив Π΄Π»ΠΈΠ½Ρ‹ 3.

Однако, Π² C++ сущСствуСт способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ссылку Π½Π° массив:

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π²Ρ‹ всё Ρ€Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ лишь ссылку, Π° Π½Π΅ массив, Ρ‚. Π΅. массив Π½Π΅ копируСтся. Но всё ΠΆΠ΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ нСсколько ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ указатСля. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ΡΡ ссылка Π½Π° массив. ВмСсто Π½Π΅Ρ‘ нСльзя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. НуТно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ массив ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ссылка Π½Π° массив Π±ΡƒΠ΄Π΅Ρ‚ вСсти сСбя ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ссылка Π½Π° массив, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ Π½Π΅Ρ‘ Π±ΡƒΠ΄Π΅Ρ‚ sizeof ΠΊΠ°ΠΊ Ρƒ массива.

И Ρ‡Ρ‚ΠΎ самоС интСрСсноС, эту ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠŸΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° функция std::end Π² C++11 для массивов.

Β«Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив». Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив» β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΠΈ Π½ΠΈΡ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π˜Π½Ρ‹ΠΌΠΈ словами:

Однако, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ Ρ„Ρ€Π°Π·ΠΎΠΉ Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив» Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ массив, Π΄Π°ΠΆΠ΅ Ссли Ρ‚ΠΈΠΏ Ρƒ этого указатСля нСподходящий. Π’ соотвСтствии с Ρ‚Π°ΠΊΠΈΠΌ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ c ΠΈ d (ΠΈ b + 0 ) β€” это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° массивы.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив

ИзмСнСния, внСсСнныС стандартом ANSI, связаны Π² основном с Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с указатСлями. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ ΡƒΠ·Π°ΠΊΠΎΠ½ΠΈΠ» Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ программистов ΠΈ ΡƒΠ΄Π°Ρ‡Π½Ρ‹Π΅ нововвСдСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² компиляторов. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π·Π°ΠΌΠ΅Π½ char* Π² качСствС Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ указатСля прСдлагаСтся Ρ‚ΠΈΠΏ void* (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° void).

5.1 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ адрСса

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 1. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 1. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 1. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π£Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & Π²Ρ‹Π΄Π°Π΅Ρ‚ адрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ инструкция

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

Π£Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * Π΅ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ косвСнного доступа. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΎΠ½ Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ x ΠΈ y ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ int, Π° ip – ΡƒΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒ Π½Π° int. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ нСсколько строк ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½Ρ‹ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ & ΠΈ *.

ОбъявлСния x, y ΠΈ z Π½Π°ΠΌ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹. ОбъявлСниС указатСля ip

ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ выраТСния *dp ΠΈ atof(s) ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ double, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ atof Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° char.

Π’Ρ‹, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. (БущСствуСт ΠΎΠ΄Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: «ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° void» ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ любого Ρ‚ΠΈΠΏΠ°, Π½ΠΎ ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ нСльзя ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ косвСнного доступа. ΠœΡ‹ вСрнСмся ΠΊ этому Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ 5.11.)

Если ip ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° x цСлочислСнного Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ *ip ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² любом мСстС, Π³Π΄Π΅ допустимо ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ x; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ *ip Π½Π° 10.

Π£Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ * ΠΈ & ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ присваиваниС

Π±Π΅Ρ€Π΅Ρ‚ Ρ‚ΠΎ, Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ip, ΠΈ добавляСт ΠΊ Π½Π΅ΠΌΡƒ 1, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ присваиваСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ y. Аналогично

ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Ρ‚ΠΎ, Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ip; Ρ‚Π΅ ΠΆΠ΅ дСйствия Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ сами ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Π² тСкстС ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ ΠΈ Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° косвСнного доступа. НапримСр, Ссли iq Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int, Ρ‚ΠΎ

ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ содСрТимоС ip Π² iq, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ip ΠΈ iq ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

5.2 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

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

Π³Π΄Π΅ функция swap ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ swap ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ лишь ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… a ΠΈ b, ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ a ΠΈ b Ρ‚ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, которая ΠΊ Π½Π΅ΠΉ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»Π°ΡΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ эффСкт, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ‚Π΅ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹:

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, &a Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° a. Π’ самой ΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ swap ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΏΡ€ΠΈ этом доступ ΠΊ значСниям ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ косвСнно.

ГрафичСски это выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 2. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 2. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 2. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

АргумСнты-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π²Ρ‹Π·Π²Π°Π²ΡˆΠ΅ΠΉ Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Рассмотрим, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getint, которая осущСствляСт Π²Π²ΠΎΠ΄ Π² свободном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа ΠΈ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· тСкстового прСдставлСния Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int. Ѐункция getint Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ числа ΠΈΠ»ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ EOF ΠΎ ΠΊΠΎΠ½Ρ†Π΅ Ρ„Π°ΠΉΠ»Π°, Ссли Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ исчСрпан. Π­Ρ‚ΠΈ значСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΊΠ°Π½Π°Π»Π°ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ нСльзя Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° число Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ совпадСт с EOF.

Одно ΠΈΠ· Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ getint Π²Ρ‹Π΄Π°Π²Π°Π»Π° характСристику состояния Ρ„Π°ΠΉΠ»Π° (исчСрпан ΠΈΠ»ΠΈ Π½Π΅ исчСрпан) Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ самого числа ΠΏΠΎΠΌΠ΅Ρ‰Π°Π»Π° согласно ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΌΡƒ Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. ΠŸΠΎΡ…ΠΎΠΆΠ°Ρ схСма дСйствуСт ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ scanf, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ рассмотрим Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ 7.4. ΠŸΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ Ρ†ΠΈΠΊΠ» заполняСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ массив Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ getint.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ обращСния ΠΊ getint посылаСтся Π² array[n], ΠΈ n увСличиваСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, ΠΈ это сущСствСнно, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getint пСрСдаСтся адрСс элСмСнта array[n]. Если этого Π½Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρƒ getint Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ способа Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ число.

Π’ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΠΎΠΌ Π½Π°ΠΌΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ функция getint Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ EOF ΠΏΠΎ ΠΊΠΎΠ½Ρ†Ρƒ Ρ„Π°ΠΉΠ»Π°; Π½ΡƒΠ»ΡŒ, Ссли ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ символы Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собою числа; ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ символы ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой число.

Π’Π΅Π·Π΄Π΅ Π² getint ΠΏΠΎΠ΄ *pn подразумСваСтся обычная пСрСмСнная Ρ‚ΠΈΠΏΠ° int. Ѐункция ungetch вмСстС с getch (ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ 4.3) Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΎΡΠ»Π°Ρ‚ΡŒ Π½Π°Π·Π°Π΄ лишний ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹ΠΉ символ.

5.3 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ массивы

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 3. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 3. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 3. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π—Π°ΠΏΠΈΡΡŒ a[i] отсылаСт нас ΠΊ i-ΠΌΡƒ элСмСнту массива. Если pa Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int, Ρ‚. Π΅. объявлСн ΠΊΠ°ΠΊ

Ρ‚ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ присваивания

pa Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт a, ΠΈΠ½Π°Ρ‡Π΅ говоря, pa Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ адрСс элСмСнта a[0].

Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС a[0] Π² x.

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 5. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 5. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 5. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

ΠœΠ΅ΠΆΠ΄Ρƒ индСксированиСм ΠΈ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ с указатСлями сущСствуСт ΠΎΡ‡Π΅Π½ΡŒ тСсная связь. По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ выраТСния Ρ‚ΠΈΠΏΠ° массив Π΅ΡΡ‚ΡŒ адрСс Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта массива. ПослС присваивания

Ρ€Π° ΠΈ a ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ имя массива являСтся синонимом располоТСния Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта, присваиваниС pa=&a[0] ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

Если имя массива пСрСдаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ послСдняя ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° адрСс Π΅Π³ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта. Π’Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ этот Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ являСтся локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, содСрТащСй адрСс. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΠΌ ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ€ΡΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ strlen, Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‰Π΅ΠΉ Π΄Π»ΠΈΠ½Ρƒ строки.

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f пСрСдаСтся адрСс подмассива, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅Π³ΠΎΡΡ с элСмСнта a[2]. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f описаниС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, для f Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‡Π°ΡΡ‚ΡŒ массива, Π° Π½Π΅ Π½Π° вСсь массив, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния.

Если Π΅ΡΡ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ элСмСнты массива ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ индСксированиС ΠΈ Π² «ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ» сторону ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π½ΡƒΠ»Π΅Π²ΠΎΠΌΡƒ элСмСнту; выраТСния p[-1], p[-2] ΠΈ Ρ‚.Π΄. Π½Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΡ€Π΅Ρ‡Π°Ρ‚ синтаксису языка ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ элСмСнтам, стоящим нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ p[0]. РазумССтся, нСльзя «Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ» Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива ΠΈ Ρ‚Π΅ΠΌ самым ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ.

5.4 АдрСсная Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ°

Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ alloc Π»Π΅Π³Ρ‡Π΅ всСго Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ссли ΡƒΡΠ»ΠΎΠ²ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ куски Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ большого массива Ρ‚ΠΈΠΏΠ° char, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π½Π°Π·ΠΎΠ²Π΅ΠΌ allocbuf. Π­Ρ‚ΠΎΡ‚ массив ΠΎΡ‚Π΄Π°Π΄ΠΈΠΌ Π² Π»ΠΈΡ‡Π½ΠΎΠ΅ пользованиС функциям alloc ΠΈ afree. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с указатСлями, Π° Π½Π΅ с индСксами массива, Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π·Π½Π°Ρ‚ΡŒ Π΅Π³ΠΎ имя Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, этот массив ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ исходном Ρ„Π°ΠΉΠ»Π΅, Ρ‡Ρ‚ΠΎ ΠΈ alloc ΠΈ afree, объявив Π΅Π³ΠΎ static, благодаря Ρ‡Π΅ΠΌΡƒ ΠΎΠ½ станСт Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ Π²Π½Π΅ этого Ρ„Π°ΠΉΠ»Π°. На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‚Π°ΠΊΠΎΠΉ массив ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ вовсС Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ malloc Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ бСзымянный Π±Π»ΠΎΠΊ памяти.

ЕстСствСнно, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, сколько элСмСнтов массива allocbuf ΡƒΠΆΠ΅ занято. ΠœΡ‹ Π²Π²Π΅Π΄Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ allocp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ свободный элСмСнт. Если Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΏΠ°ΠΌΡΡ‚ΡŒ для n символов, Ρ‚ΠΎ alloc Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ allocp (Ρ‚. Π΅. адрСс Π½Π°Ρ‡Π°Π»Π° свободного Π±Π»ΠΎΠΊΠ°) ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π½Π° n, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ allocp ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Если ΠΆΠ΅ пространства Π½Π΅Ρ‚, Ρ‚ΠΎ alloc Π²Ρ‹Π΄Π°Π΅Ρ‚ Π½ΡƒΠ»ΡŒ. Ѐункция afree(p) просто устанавливаСт allocp Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ p, Ссли ΠΎΠ½ΠΎ Π½Π΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ массива allocbuf.

ΠŸΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ allос:

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 6. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 6. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 6. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

ПослС Π²Ρ‹Π·ΠΎΠ²Π° alloc:

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 7. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 7. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 7. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

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

опрСдСляСт allocp ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° char ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ адрСсом массива allocbuf, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ массив allocbuf пуст. Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ объявлСниС ΠΌΠΎΠ³Π»ΠΎ Π±Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΈΠ΄:

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ имя массива ΠΈ Π΅ΡΡ‚ΡŒ адрСс Π΅Π³ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°

ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚, достаточно Π»ΠΈ пространства, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΠΈΡ‚ΡŒ запрос Π½Π° n символов. Если памяти достаточно, Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для allocp Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π΄Π°Π»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π·Π° послСдним элСмСнтом allocbuf. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого трСбования alloc Π²Ρ‹Π΄Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° символов (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° объявлСниС Ρ‚ΠΈΠΏΠ° самой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). Если Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ выполняСтся, функция alloc Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ сигнал ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ памяти Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚. Π‘ΠΈ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½ΡƒΠ»ΡŒ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ адрСсом для Π΄Π°Π½Π½Ρ‹Ρ…, поэтому ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² качСствС ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ° Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ события, Π² нашСм случаС Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти.

Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ нСсколько Π²Π°ΠΆΠ½Ρ‹Ρ… свойств Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ с указатСлями. Π’ΠΎ- ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΡ€ΠΈ соблюдСнии Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ» ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ.

Если p ΠΈ q ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива, Ρ‚ΠΎ ΠΊ Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ==, !=, = ΠΈ Ρ‚. Π΄. НапримСр, ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°

истинно, Ссли p ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΉ элСмСнт массива, Ρ‡Π΅ΠΌ q. Π›ΡŽΠ±ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π½Π° равСнство ΠΈ нСравСнство с Π½ΡƒΠ»Π΅ΠΌ. А Π²ΠΎΡ‚ для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ массива, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ»ΠΈ сравнСний Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½. (БущСствуСт ΠΎΠ΄Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: Π² Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ΅ с указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ адрСс Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ «ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π° массивом» элСмСнта, Ρ‚. Π΅. адрСс Ρ‚ΠΎΠ³ΠΎ «ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ станСт послСдним, Ссли Π² массив Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт.)

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Ρ†Π΅Π»Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ

ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ адрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π³ΠΎ n-Π΅ мСсто послС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ p. Π­Ρ‚ΠΎ справСдливо Π±Π΅Π·ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ Ρ‚ΠΈΠΏΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ p; n автоматичСски домноТаСтся Π½Π° коэффициСнт, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ нСявно присутствуСт Π² объявлСнии p. Если, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, int Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π±Π°ΠΉΡ‚Π°, Ρ‚ΠΎ коэффициСнт умноТСния Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ΠΌ.

МоТно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с указатСлями: присваиваниС значСния указатСля Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, слоТСниС ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ указатСля ΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ, Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ ΠΈ сравнСниС Π΄Π²ΡƒΡ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ массива, Π° Ρ‚Π°ΠΊΠΆΠ΅ присваиваниС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ нуля ΠΈ сравнСниС указатСля с Π½ΡƒΠ»Π΅ΠΌ. Π”Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с указатСлями ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π΅ допускаСтся. НСльзя ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π²Π° указатСля, ΠΏΠ΅Ρ€Π΅ΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒ ΠΈΡ…, Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΡΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ, Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ разряды; ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ нСльзя ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°Ρ‚ΡŒ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° float ΠΈΠ»ΠΈ double; ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° нСльзя Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния (ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ лишь ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ‚ΠΈΠΏΠ° void*).

5.5 Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Бтроковая константа, написанная Π² Π²ΠΈΠ΄Π΅

Π΅ΡΡ‚ΡŒ массив символов. Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ прСдставлСнии этот массив заканчиваСтся Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ символом ‘\0’, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΊΠΎΠ½Π΅Ρ† строки. Число занятых ячССк памяти Π½Π° ΠΎΠ΄Π½Ρƒ большС, Ρ‡Π΅ΠΌ количСство символов, ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ.

Π§Π°Ρ‰Π΅ всСго строковыС константы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²

Когда такая символьная строка появляСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, доступ ΠΊ Π½Π΅ΠΉ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ; printf ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ массива символов. Π’ΠΎΡ‡Π½Π΅Π΅, доступ ΠΊ строковой константС осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΅Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ константы Π½ΡƒΠΆΠ½Ρ‹ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Если, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ pmessage ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ

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

БущСствуСт Π²Π°ΠΆΠ½ΠΎΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ опрСдСлСниями:

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 8. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 8. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 8. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹, связанныС с указатСлями ΠΈ массивами, ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π° нСсколько Π²ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°Ρ… Π΄Π²ΡƒΡ… ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, взятых Π½Π°ΠΌΠΈ ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠŸΠ΅Ρ€Π²Π°Ρ ΠΈΠ· Π½ΠΈΡ…, функция strcpy (s, t), ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ строку t Π² строку s. Π₯ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ прямо s = t, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π° Π½Π΅ символы. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ». ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ strcpy, с использованиСм массива, ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ лишь ΠΊΠΎΠΏΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², strcpy ΠΌΠΎΠΆΠ΅Ρ‚ свободно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ s ΠΈ t ΠΊΠ°ΠΊ своими Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Они Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ указатСлями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· массивов Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ строкС t Π½Π΅ встрСтится ‘\0’.

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ strcpy Ρ‚Π°ΠΊ Π½Π΅ ΠΏΠΈΡˆΡƒΡ‚. ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ программист ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ запись:

ΠŸΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ s ΠΈ t здСсь осущСствляСтся Π² ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ части Ρ†ΠΈΠΊΠ»Π°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ *t++ являСтся символ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ пСрСмСнная t ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎ; постфиксный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ++ Π½Π΅ измСняСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ t, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ взят символ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. Π’ΠΎ ΠΆΠ΅ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ s: сначала символ запомнится Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ староС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ s, ΠΈ лишь послС этого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ s увСличится. ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅ΠΌΡ‹ΠΉ символ являСтся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сравниваСтся с ‘\0’. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ всС символы, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ ‘\0’.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠ², Ρ‡Ρ‚ΠΎ сравнСниС с ‘\0’ здСсь лишнСС (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π‘ΠΈ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π² условии трактуСтся ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ), ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΈ послСднСС сокращСниС тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π₯отя Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ, выглядит Π·Π°Π³Π°Π΄ΠΎΡ‡Π½ΠΎ, всС ΠΆΠ΅ такая запись Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, ΠΈ слСдуСт ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π΅Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π‘ΠΈ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ с Π½Π΅ΠΉ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ.

Π§Ρ‚ΠΎ касаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ strcpy ΠΈΠ· стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² качСствС своСго Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π΅Ρ‰Π΅ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½ΠΎΠ²ΡƒΡŽ копию строки.

Вторая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ здСсь рассмотрим, это strcmp(s,t). Она сравниваСт символы строк s ΠΈ t ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли строка s соотвСтствСнно лСксикографичСски мСньшС, Ρ€Π°Π²Π½Π° ΠΈΠ»ΠΈ большС, Ρ‡Π΅ΠΌ строка t. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получаСтся Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΡ… символов ΠΈΠ· s ΠΈ t.

Π’Π° ΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с использованиСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ выглядит Ρ‚Π°ΠΊ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ++ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ прСфиксными, ΠΈΠ»ΠΈ постфиксными, Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ (хотя ΠΈ Π½Π΅ Ρ‚Π°ΠΊ часто) Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΡ… сочСтания с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ *. НапримСр.

ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ p ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΠΎ этому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ символ. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° выраТСния:

ΡΠ²Π»ΡΡŽΡ‚ΡΡ стандартными для посылки Π² стСк ΠΈ взятия ΠΈΠ· стСка (см. ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ 4.3.).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.3. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strcat, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ рассматривали Π² Π³Π»Π°Π²Π΅ 2 (функция strcat(s,t) ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ строку t Π² ΠΊΠΎΠ½Π΅Ρ† строки s).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.4. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strend(s,t), которая Π²Ρ‹Π΄Π°Π΅Ρ‚ 1, Ссли строка t располоТСна Π² ΠΊΠΎΠ½Ρ†Π΅ строки s, ΠΈ Π½ΡƒΠ»ΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.5. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ strncpy, strncat ΠΈ strncmp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ символами своих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², число ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ n. НапримСр, strncpy(t,s,n) ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ n символов t Π² s. ΠŸΠΎΠ»Π½Ρ‹Π΅ описания этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ содСрТатся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ B.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.6. ΠžΡ‚Π±Π΅Ρ€ΠΈΡ‚Π΅ подходящиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π³Π»Π°Π² ΠΈ ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΈΡ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ вмСсто индСксирования ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. ΠŸΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚, Π² частности, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ getline (Π³Π»Π°Π²Ρ‹ 1 ΠΈ 4), atoi, itoa ΠΈ ΠΈΡ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ (Π³Π»Π°Π²Ρ‹ 2, 3 ΠΈ 4), reverse (Π³Π»Π°Π²Π° 3), Π° Ρ‚Π°ΠΊΠΆΠ΅ strindex ΠΈ getop (Π³Π»Π°Π²Π° 4).

5.6 ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Как ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² массивы. Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ этого напишСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π½ΠΎΠΌ порядкС тСкстовыС строки; это Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ sort систСмы UNIX.

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 9. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 9. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 9. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Как ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ СстСствСнному дСлСнию Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΈ напишСм Π³Π»Π°Π²Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ main, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ этими функциями. ΠžΡ‚Π»ΠΎΠΆΠΈΠΌ Π½Π° врСмя Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ этапа сортировки ΠΈ сосрСдоточимся Π½Π° структурС Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Π²ΠΎΠ΄Π΅-Π²Ρ‹Π²ΠΎΠ΄Π΅.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹Π²ΠΎΠ΄Π° занимаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ строки, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² Ρ‚ΠΎΠΌ порядкС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располоТСны ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π½ΠΈΡ… Π² массивС.

Π’Π½Π°Ρ‡Π°Π»Π΅ *lineptr ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку: ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ указатСля ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ *lineptr ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку, ΠΈ дСлаСтся это Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° nlines Π½Π΅ станСт Π½ΡƒΠ»Π΅ΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ с Π²Π²ΠΎΠ΄ΠΎΠΌ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ сортировкС. Π‘Ρ‹ΡΡ‚Ρ€ΡƒΡŽ сортировку, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π² Π³Π»Π°Π²Π΅ 4, Π½Π°Π΄ΠΎ нСсколько ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ: Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ объявлСния, Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ сравнСния Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΊ strcmp. Алгоритм остался Ρ‚Π΅ΠΌ ΠΆΠ΅, ΠΈ это Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

НСбольшиС ΠΏΠΎΠΏΡ€Π°Π²ΠΊΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ пСрСстановки.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.7. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ readlines, которая Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π»Π° Π±Ρ‹ строки Π² массивС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ Π² main, Π° Π½Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π»Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ посрСдством ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ alloc. Насколько быстрСС эта ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°?

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

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

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

НапоминаСм, Ρ‡Ρ‚ΠΎ арифмСтичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ логичСского выраТСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ выраТСния, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΠ»ΠΎΡΡŒ leap) Ρ€Π°Π²Π½ΠΎ Π»ΠΈΠ±ΠΎ Π½ΡƒΠ»ΡŽ (лоТь), Π»ΠΈΠ±ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ (истина), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΊΠ°ΠΊ индСкс Π² массивС daytab.

Массив daytab Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ внСшним ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ ΠΎΠ±Π΅ΠΈΠΌ функциям day_of_year ΠΈ month_day, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π½ΡƒΠΆΠ΅Π½ ΠΈ Ρ‚ΠΎΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ. ΠœΡ‹ сдСлали Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ° char, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½Π½ΠΎΡΡ‚ΡŒ примСнСния Ρ‚ΠΈΠΏΠ° char для ΠΌΠ°Π»Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

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

Массив инициализируСтся списком Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΌ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки; каТдая строка Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива инициализируСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ подсписком. НулСвой столбСц Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π½Π°Ρ‡Π°Π»ΠΎ daytab лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ индСксы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, совпадали с СстСствСнными Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ мСсяцСв ΠΎΡ‚ 1 Π΄ΠΎ 12. Π­ΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Ρƒ ячССк памяти здСсь Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡƒΠΆΠ΅ Π½Π΅ Π½Π°Π΄ΠΎ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ индСкс, выглядит Π±ΠΎΠ»Π΅Π΅ ясной.

Если Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив пСрСдаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, Ρ‚ΠΎ объявлСниС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅ΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ количСство столбцов; количСство строк Π² Π΄Π°Π½Π½ΠΎΠΌ случаС нСсущСствСнно, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив строк, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ массив ΠΈΠ· 13 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int. B нашСм частном случаС ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ массивами ΠΈΠ· 13 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ссли массив daytab пСрСдаСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ f, Ρ‚ΠΎ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ число строк здСсь Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, ΠΈΠ»ΠΈ

ПослСдняя запись ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΠΈΠ· 13 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int. Π‘ΠΊΠΎΠ±ΠΊΠΈ здСсь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки [] ΠΈΠΌΠ΅ΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ *. Π‘Π΅Π· скобок объявлСниС

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

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.8. Π’ функциях day_of_year ΠΈ month_day Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π΄Π°Ρ‚. УстранитС этот нСдостаток.

5.8 Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массивов ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

НапишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ month_name(n), которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° строку символов, содСрТащий Π½Π°Π·Π²Π°Π½ΠΈΠ΅ n-Π³ΠΎ мСсяца. Π­Ρ‚Π° функция идСальна для дСмонстрации использования статичСского массива. Ѐункция month_name ΠΈΠΌΠ΅Π΅Ρ‚ Π² своСм Π»ΠΈΡ‡Π½ΠΎΠΌ распоряТСнии массив строк, Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. НиТС ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ инициализируСтся этот массив ΠΈΠΌΠ΅Π½.

Бинтаксис задания Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ синтаксису ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ:

ОбъявлСниС name массивом ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° символы Ρ‚Π°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ объявлСниС lineptr Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ сортировки. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ слуТит список строк, ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ мСсто Π² массивС. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ i-ΠΉ строки Π³Π΄Π΅-Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½ΠΈΡ… запоминаСтся Π² name[i]. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива name Π½Π΅ спСцифицирован, компилятор вычислит Π΅Π³ΠΎ ΠΏΠΎ количСству Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

5.9 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π‘ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚, Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом ΠΈ массивом ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π²Ρ€ΠΎΠ΄Π΅ name ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Для Π΄Π²ΡƒΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ:

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

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 10. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 10. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 10. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

с объявлСниСм ΠΈ рисунком для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 11. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 11. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 11. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.9. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ day_of_year ΠΈ month_day, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ вмСсто индСксов ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

5.10 АргумСнты ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСдС, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π‘ΠΈ, имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запускаСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° main ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌ argc (сокращСниС ΠΎΡ‚ argument count), стоит количСство Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС. Π’Ρ‚ΠΎΡ€ΠΎΠΉ, argv (ΠΎΡ‚ argument vector), являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° массив ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… строк, содСрТащих сами Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с этими строками ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ.

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 12. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 12. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 12. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

ΠŸΠ΅Ρ€Π²Π°Ρ вСрсия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ echo Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅Ρ‚ argv ΠΊΠ°ΠΊ массив ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Как Π²ΠΈΠ΄ΠΈΠΌ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π² printf Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π’ качСствС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ поиска ΠΎΠ±Ρ€Π°Π·Ρ†Π°, Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΡƒΡŽ Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ 4.1, ΠΈ нСсколько ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠ΅ΠΌ Π΅Π΅. Если Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΎΠ±Ρ€Π°Π·Π΅Ρ† для поиска ΠΌΡ‹ «Π²ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ» Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π° это, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с grep ΠΈΠ· UNIXa, Ρ‚. Π΅. Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† для поиска задавался ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС.

По ΠΎΠ±Ρ‰Π΅ΠΌΡƒ соглашСнию для Π‘ΠΈ-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² систСмС UNIX Π·Π½Π°ΠΊ минус ΠΏΠ΅Ρ€Π΅Π΄ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. Π’Π°ΠΊ, Ссли -x слуТит ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ слова «ΠΊΡ€ΠΎΠΌΠ΅», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ измСняСт Π·Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅, Π° -n ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Π½ΡƒΠΌΠ΅Ρ€Π°Ρ†ΠΈΠΈ строк, Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ всС строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·Π΅Ρ†, ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкой ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π΅Π΅ Π½ΠΎΠΌΠ΅Ρ€.

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

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ запишСм Π½Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ индСксирования [] ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ * ΠΈ ++, ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки здСсь ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Π±Π΅Π· Π½ΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Π»ΠΎΡΡŒ Π±Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ *++(argv[0]). ИмСнно Ρ‚Π°ΠΊΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅, Π³Π΄Π΅ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ символы ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ *++argv[0] ΠΏΡ€ΠΈΡ€Π°Ρ‰ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ argv[0].

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

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.10. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ expr, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΡΠΊΡƒΡŽ запись выраТСния, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ прСдставлСны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ. НапримСр,

вычисляСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ 2*(3+4).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.11. Π£ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ entab ΠΈ detab (см. упраТнСния 1.20 ΠΈ 1.21) Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ список «ΡΡ‚ΠΎΠΏΠΎΠ²» табуляции.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.12. Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ возмоТности entab ΠΈ detab Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π²ΠΈΠ΄Π°

«ΡΡ‚ΠΎΠΏΡ‹» табуляции Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈΡΡŒ с m-ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ n ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°ΠΉΡ‚Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ повСдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.13. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ tail, ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΡŽΡ‰ΡƒΡŽ n послСдних Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… строк. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ n Ρ€Π°Π²Π½ΠΎ 10, Π½ΠΎ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ n ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π²ΠΈΠ΄Π°

ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ n послСдних строк. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° вСсти сСбя осмыслСнно ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ любом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ n. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ; Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ строк ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ сортировки, описанной Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ 5.6, Π° Π½Π΅ Π½Π° основС Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива с фиксированным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ строки.

5.11 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ°, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, распадаСтся Π½Π° Ρ‚Ρ€ΠΈ части: Π½Π° сравнСниС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²; пСрСстановку, ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽ мСстами ΠΏΠ°Ρ€Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ ΡΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ осущСствляСт сравнСния ΠΈ пСрСстановки Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ упорядочСны. Алгоритм сортировки Π½Π΅ зависит ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСния ΠΈ пСрСстановки, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ пСрСдавая Π΅ΠΌΡƒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сравнСния ΠΈ пСрСстановки, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ сортировки.

ЛСксикографичСскоС сравнСниС Π΄Π²ΡƒΡ… строк выполняСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ strcmp (ΠΌΡ‹ ΡƒΠΆΠ΅ использовали эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Ρ€Π°Π½Π΅Π΅ рассмотрСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ сортировки); Π½Π°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ потрСбуСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° numcmp, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰Π°Ρ Π΄Π²Π΅ строки ΠΊΠ°ΠΊ числовыС значСния ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ сравнСния Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅, Π² ΠΊΠ°ΠΊΠΎΠΌ Π΅Π³ΠΎ Π²Ρ‹Π΄Π°Π΅Ρ‚ strcmp. Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ main, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½ΠΈΡ… пСрСдаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ qsort. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΌ, ΠΌΡ‹ упростили сСбС Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΎΡ‚ΠΊΠ°Π·Π°Π²ΡˆΠΈΡΡŒ ΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ошибок ΠΏΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’ обращСниях ΠΊ функциям qsort, strcmp ΠΈ numcmp ΠΈΡ… ΠΈΠΌΠ΅Π½Π° Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ адрСса этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, поэтому ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & ΠΏΠ΅Ρ€Π΅Π΄ Π½ΠΈΠΌΠΈ Π½Π΅ Π½ΡƒΠΆΠ΅Π½, ΠΊΠ°ΠΊ ΠΎΠ½ Π½Π΅ Π±Ρ‹Π» Π½ΡƒΠΆΠ΅Π½ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ массива.

ΠœΡ‹ написали qsort Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΌΠΎΠ³Π»Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ любого Ρ‚ΠΈΠΏΠ°, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки символов. Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ°, функция qsort Π² качСствС своих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… значСния ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с двумя Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ-указатСлями. Π’ качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π·Π°Π΄Π°Π½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° void *. Π›ΡŽΠ±ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ привСсти ΠΊ Ρ‚ΠΈΠΏΡƒ void * ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ qsort, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² void *. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сравнСния Π΅Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ Π΅ΠΉ Ρ‚ΠΈΠΏΡƒ. На самом Π΄Π΅Π»Π΅ эти прСобразования Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° прСдставлСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΎΠ½ΠΈ лишь ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠΎΠ² для компилятора.

ΠŸΠΎΠ²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π΅ΠΉ приглядимся ΠΊ объявлСниям. Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ qsort:

— ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΉ. Π‘ΠΊΠΎΠ±ΠΊΠΈ здСсь Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²ΠΊΡƒ объявлСния; Π±Π΅Π· Π½ΠΈΡ… объявлСниС

ΠœΡ‹ ΡƒΠΆΠ΅ рассматривали Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ strcmp, ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‰ΡƒΡŽ Π΄Π²Π΅ строки. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° функция numcmp, которая сравниваСт Π΄Π²Π΅ строки, рассматривая ΠΈΡ… ΠΊΠ°ΠΊ числа; ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ пСрСводятся Π² числовыС значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ atof.

Ѐункция swap, ΠΌΠ΅Π½ΡΡŽΡ‰Π°Ρ мСстами Π΄Π²Π° указатСля, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° Ρ‚ΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΡ€ΠΈΠ²Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅ Π² этой Π³Π»Π°Π²Π΅ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ объявлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° void*.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сортировки ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈ мноТСством Π΄Ρ€ΡƒΠ³ΠΈΡ… возмоТностСй; Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… прСдлагаСтся Π² качСствС ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.14. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сортировки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»Π° Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -r, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Ρ‚. Π΅. Π² порядкС убывания. ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ -r Ρ€Π°Π±ΠΎΡ‚Π°Π» ΠΈ вмСстС с -n.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.15. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -f, Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄Π΅Π»Π°Π»ΠΎ Π±Ρ‹ Π½Π΅Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌΡ‹ΠΌΠΈ символы Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистров (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, a ΠΈ A Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ сравнСнии Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ).

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.16. ΠŸΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ -d, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заставит ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ сравнСнии ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠΊΠ²Ρ‹, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. ΠžΡ€Π³Π°Π½ΠΈΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ вмСстС с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ -f.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.17. Π Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с полями: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сортировки ΠΏΠΎ полям Π²Π½ΡƒΡ‚Ρ€ΠΈ строк. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля прСдусмотритС свой Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ этой ΠΊΠ½ΠΈΠ³ΠΈ (Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π² Π²ΠΈΠ΄Ρƒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° английским языкС. – ΠŸΡ€ΠΈΠΌΠ΅Ρ‡. ΠΏΠ΅Ρ€.) упорядочивался с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ: -df для Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ² ΠΈ -n для Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² страниц.

5.12 Π‘Π»ΠΎΠΆΠ½Ρ‹Π΅ объявлСния

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

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ прСфиксного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° * Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ (), поэтому Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС скобки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹.

Π₯отя Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎ-настоящСму слоТныС объявлСния Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ, всС ΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π° Ссли потрСбуСтся, ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π£ΠΊΠ°ΠΆΠ΅ΠΌ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ способ: объявлСния ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΠ½Ρ‚Π΅Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, двигаясь нСбольшими шагами с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ typedef, этот способ рассмотрСн Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ 6.7. Π’ настоящСм ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π²ΡƒΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… прСобразования ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… Π‘ΠΈ-объявлСний Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ словСсныС описания ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΌΡ‹ дСмонстрируСм ΠΈΠ½ΠΎΠΉ способ конструирования объявлСний. БловСсноС описаниС читаСтся слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ.

Ѐункция dcl Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ, ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ. Π­Ρ‚Π° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° строго ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ 8.5 прилоТСния A, Π° Π² ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ записываСтся Ρ‚Π°ΠΊ:

Говоря простым языком, ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ Π΅ΡΡ‚ΡŒ собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ * (Ρ‚. Π΅. ΠΎΠ΄Π½Π° ΠΈΠ»ΠΈ нСсколько Π·Π²Π΅Π·Π΄ΠΎΡ‡Π΅ΠΊ), Π³Π΄Π΅ собствСнно- ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ Π΅ΡΡ‚ΡŒ имя, ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ Π² скобках, ΠΈΠ»ΠΈ собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€ΠΎΠΉ скобок, ΠΈΠ»ΠΈ собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ°Ρ€ΠΎΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€.

Π­Ρ‚Ρƒ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° объявлСний. Рассмотрим, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ:

Π‘Π΅Ρ€Π΄Ρ†Π΅Π²ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Ρ являСтся ΠΏΠ°Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ dcl ΠΈ dirdcl, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… грамматичСский Ρ€Π°Π·Π±ΠΎΡ€ объявлСния согласно ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° рСкурсивно, эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ рСкурсивно, ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ распознавания ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… частСй объявлСния. ΠœΠ΅Ρ‚ΠΎΠ΄, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ Π² обсуТдаСмой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ для грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°, называСтся рСкурсивным спуском.

Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. fig5 13. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив Ρ„ΠΎΡ‚ΠΎ. Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив-fig5 13. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π§Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ функция cap ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° массив. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° fig5 13. К Π°ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ располоТСны Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области памяти. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ – это сохранСниС состояния, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ адрСсу, Π³Π΄Π΅ располагаСтся функция. Π’ си Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡. БовмСстно с void указатСлями ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, сортировки ΠΈ поиска). Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠΈΡ… порядков (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠ΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ): ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, свёртки, Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ ΠΈ ΠΏΡ€. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ конструкции. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ слуТат Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ цСлям ΠΈ Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹. Π§Ρ‚ΠΎ касаСтся dcl, Ρ‚ΠΎ Π΅Π΅ возмоТности сущСствСнно ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹. Она ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с простыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ char ΠΈ int ΠΈ Π½Π΅ справляСтся с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² функциях ΠΈ с ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ const. Π›ΠΈΡˆΠ½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ для Π½Π΅Π΅ опасны. Она Π½Π΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΌΠ΅Ρ€ ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ ΠΈΠ· ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΉ ситуации, ΠΈ поэтому Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ описания Ρ‚Π°ΠΊΠΆΠ΅ Π΅ΠΉ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹. УстранСниС этих нСдостатков ΠΌΡ‹ оставляСм для ΡƒΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠΉ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ главная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° main.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ getch ΠΈ ungetch Π±Ρ‹Π»ΠΈ рассмотрСны Π² Π³Π»Π°Π²Π΅ 4.

ΠžΠ±Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ рСализуСтся Π»Π΅Π³Ρ‡Π΅, особСнно Ссли Π½Π΅ ΠΏΡ€ΠΈΠ΄Π°Π²Π°Ρ‚ΡŒ значСния Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ лишниС скобки. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° undcl ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Ρ€Π°Π·Ρƒ Π²Ρ€ΠΎΠ΄Π΅ «x Π΅ΡΡ‚ΡŒ функция, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ char«, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅

Π’Π°ΠΊΠΎΠΉ сокращСнный Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ синтаксис позволяСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ gettoken. Ѐункция undcl ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚Π΅ ΠΆΠ΅ самыС внСшниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΈ dcl.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.18. Π’ΠΈΠ΄ΠΎΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ dcl Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π° ошибки Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.19. ΠœΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠΉΡ‚Π΅ undcl Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»Π° Π»ΠΈΡˆΠ½ΠΈΡ… скобок.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.20. Π Π°ΡΡˆΠΈΡ€ΡŒΡ‚Π΅ возмоТности dcl, Ρ‡Ρ‚ΠΎΠ±Ρ‹ dcl ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π° объявлСния с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π²Ρ€ΠΎΠ΄Π΅ const ΠΈ Ρ‚. ΠΏ.

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

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

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