ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ со ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ класса памяти static, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊ. Вакая пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ глобальноС врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° объявлСна. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΊΠ»Π°ΡΡΠΎΠΌ auto, ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выдСляСтся Π² ΡΡ‚Π΅ΠΊΠ΅, для… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΠ°Ρ„Π΅Π΄Ρ€Π°: Автоматика ΠΈ Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π’Π΅Ρ…Π½ΠΈΠΊΠ° ΠœΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

  • 1. ΠšΠ»Π°ΡΡΡ‹ памяти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°
    • 1.1 ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия
    • 1.2 ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости
    • 1.3 ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΆΠΈΠ·Π½ΠΈ
    • 2. МодСли памяти ΠžΠ—Π£
    • 2.1 Π’ΠΈΠ΄Ρ‹ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти
    • 2.2 Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π° Π² ΠžΠ—Π£ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ large
    • 3. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
    • 3.1 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ
    • 3.2 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ
    • 3.3 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов
    • 3.4 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов
    • 4. ВСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
    • 5. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ задания
    • 5.1 Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ классы памяти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
    • 5.2 Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с адрСсами
    • 5.3 ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ
    • 5.3.1 Π‘Π²ΠΎΠΏΠΈΠ½Π³
    • 5.3.2 Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
    • 5.3.3 Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива
    • 5.3.4 Π£Π³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ
    • 5.3.5 ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹
    • 5.4 Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
    • 5.5 ВСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
    • 5.5.1 Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива
    • 5.5.2 МиниМакс
    • 6. Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ задания
    • 6.1 Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅
    • 6.2 Π§Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты массива
    • 6.3 НахоТдСниС простых чисСл
    • 6.4 ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ подстроки Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ
    • 6.5 ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†
    • 7. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ задания
    • БиблиографичСский список

1. ΠšΠ»Π°ΡΡΡ‹ памяти ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°

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

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса памяти Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ auto, register, static ΠΈΠ»ΠΈ extern. Если класс памяти Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ ΠΎΠ½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ· ΠΊΠΎΠ½Ρ‚Скста объявлСния.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ классов auto ΠΈ register ΠΈΠΌΠ΅ΡŽΡ‚ локальноС врСмя ΠΆΠΈΠ·Π½ΠΈ. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ static ΠΈ extern ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ.

ΠŸΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован любой ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… спСцификаторов класса памяти, Π° Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½, Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ся класс памяти auto.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти auto ΠΈΠΌΠ΅Π΅Ρ‚ локальноС врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΈ Π²ΠΈΠ΄Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π±Π»ΠΎΠΊΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ объявлСна. ΠŸΠ°ΠΌΡΡ‚ΡŒ для Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ выдСляСтся ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ся ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ°. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ Π΄Ρ€ΡƒΠ³ΠΎΠΉ участок памяти.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти auto автоматичСски Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ся. Она Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° явно ΠΏΡ€ΠΈ объявлСнии ΠΏΡƒΡ‚Π΅ΠΌ присвоСния Π΅ΠΉ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти auto считаСтся Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ.

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

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ со ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ класса памяти static, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊ. Вакая пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ глобальноС врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° объявлСна. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΊΠ»Π°ΡΡΠΎΠΌ auto, ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выдСляСтся Π² ΡΡ‚Π΅ΠΊΠ΅, для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΊΠ»Π°ΡΡΠΎΠΌ static ΠΏΠ°ΠΌΡΡ‚ΡŒ выдСляСтся Π² ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сохраняСтся ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ°.

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

/* объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти static. */

/* исходный Ρ„Π°ΠΉΠ» file1. c */

main ()

{…

}

fun1 ()

{ static int i=0;…

}

/* исходный Ρ„Π°ΠΉΠ» file2. c */

fun2 ()

{ static int i=0;…

}

fun3 ()

{ static int i=0;…

}

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти static, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° i. КаТдая ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ глобальноС врСмя ΠΆΠΈΠ·Π½ΠΈ, Π½ΠΎ Π²ΠΈΠ΄ΠΈΠΌΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° объявлСна. Π­Ρ‚ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для подсчСта числа ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ класса памяти static ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Если явной ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π΅Ρ‚, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ присваиваСтся Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ константным адрСсным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ адрСса Π»ΡŽΠ±Ρ‹Ρ… Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΡ€ΠΎΠΌΠ΅ адрСсов ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти auto, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ адрСс послСдних Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся константой ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊ. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ выполняСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π΅ Π² Π±Π»ΠΎΠΊ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная локально с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти extern, являСтся ссылкой Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с Ρ‚Π΅ΠΌ ΠΆΠ΅ самым ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ глобально Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ЦСль Ρ‚Π°ΠΊΠΎΠ³ΠΎ объявлСния состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ глобального уровня Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°.

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

/* объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i, ΡΠ²Π»ΡΡŽΡ‰Π΅ΠΉΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ внСшнСго массива Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл, Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅*/

/* исходный Ρ„Π°ΠΉΠ» file1. c */

main ()

{…

}

fun1 ()

{ extern long i [] ;…

}

/* исходный Ρ„Π°ΠΉΠ» file2. c */

long i [MAX] ={0};

fun2 ()

{…

}

fun3 ()

{…

}

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i [] ΠΊΠ°ΠΊ extern Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fun1. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ находится Π² Ρ„Π°ΠΉΠ»Π΅ file2. c Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ, Π² Ρ‚ΠΎ Π²Ρ€Π΅ΠΌΡ ΠΊΠ°ΠΊ объявлСний с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти extern ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько.

ОбъявлСниС с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти extern трСбуСтся ΠΏΡ€ΠΈ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ исходном Ρ„Π°ΠΉΠ»Π΅, Π½ΠΎ Π½ΠΈΠΆΠ΅ ΠΏΠΎ Ρ‚Сксту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚. Π΅. Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΅Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ опрСдСлСния. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ΅ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ st.

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

main ()

{ extern int st [] ;…

}

static int st [MAX] ={0};

fun1 ()

{…

}

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ со ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ extern ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ компилятор ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ Ρ‚рСбуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π³Π΄Π΅-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован спСцификатор класса памяти static ΠΈΠ»ΠΈ extern, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π΅Π· указания класса памяти. ΠšΠ»Π°ΡΡΡ‹ памяти auto ΠΈ register для глобального объявлСния нСдопустимы.

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ — это ΠΈΠ»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ ссылки Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ, сдСланныС Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ОбъявлСниС глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (явно ΠΈΠ»ΠΈ нСявно), являСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ…:

1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ объявлСна с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти static. Вакая пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° явно константным Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ΠΎ Π΅ΡΡ‚ΡŒ обьявлСния static int i=0 ΠΈ static int i ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½Ρ‹, ΠΈ Π² ΠΎΠ±ΠΎΠΈΡ… случаях ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i Π±ΡƒΠ΄Π΅Ρ‚ присвоСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0.

2. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ объявлСна Π±Π΅Π· указания класса памяти, Π½ΠΎ Ρ ΡΠ²Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π’Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ присваиваСтся класс памяти static. Π’ΠΎ Π΅ΡΡ‚ΡŒ объявлСния int i=1 ΠΈ static int i=1 Π±ΡƒΠ΄ΡƒΡ‚ эквивалСнтны.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ объявлСнная глобально Π²ΠΈΠ΄ΠΈΠΌΠ° Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… остатка исходного Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°. Π’Ρ‹ΡˆΠ΅ своСго описания ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… исходных Ρ„Π°ΠΉΠ»Π°Ρ… эта пСрСмСнная Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠ° (Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½Π° Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π° с ΠΊΠ»Π°ΡΡΠΎΠΌ extern).

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ пСрСмСнная ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… своСй области видимости. Π’ Π΄Ρ€ΡƒΠ³ΠΎΠΌ исходном Ρ„Π°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ объявлСна другая глобальная пСрСмСнная с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ памяти static, ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΏΡ€ΠΈ этом Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ каТдая ΠΈΠ· ΡΡ‚ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠ²ΠΎΠ΅ΠΌ исходном Ρ„Π°ΠΉΠ»Π΅.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ класса памяти extern для Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ локального объявлСния, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚. Π΅. для Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ области видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ объявлСнии ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ΡΡ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° исходного Ρ„Π°ΠΉΠ»Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сдСлано объявлСниС.

Π’ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти extern Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Π΅Ρ‚ся инициализация, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эти объявлСния ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ дСлаСтся ссылка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ спСцификатора extern, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

1.1 ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия

ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ — это Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ исходного модуля, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ этой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ Π²ΠΈΠ΄Ρ‹ областСй дСйствия.

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

Ѐункция. ЀактичСски совпадаСт с Ρ‚Π΅Π»ΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ дСйствия ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, пСрСчислСнныС Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ goto.

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

1.2 ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости

Π’ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ опрСдСляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ.

1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная ΠΈΠ»ΠΈ опрСдСлСнная глобально, Π²ΠΈΠ΄ΠΈΠΌΠ° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ объявлСния ΠΈΠ»ΠΈ опрСдСлСния Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° исходного Ρ„Π°ΠΉΠ»Π°. МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… исходных Ρ„Π°ΠΉΠ»Π°Ρ…, для Ρ‡Π΅Π³ΠΎ Π² ΡΡ‚ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… слСдуСт Π΅Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти extern.

2. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная ΠΈΠ»ΠΈ опрСдСлСнная локально, Π²ΠΈΠ΄ΠΈΠΌΠ° ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ объявлСния ΠΈΠ»ΠΈ опрСдСлСния Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°. Вакая пСрСмСнная называСтся локальной.

3. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π±Π»ΠΎΠΊΠ°Ρ…. Π­Ρ‚Ρƒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ. Если пСрСмСнная, объявлСнная Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ ΠΈΠΌΡ, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная Π² ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅, Ρ‚ΠΎ ΡΡ‚ΠΎ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ° Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ Π±Π»ΠΎΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ.

4. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти static Π²ΠΈΠ΄ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.

ΠœΠ΅Ρ‚ΠΊΠΈ Π² Ρ„ункциях Π²ΠΈΠ΄ΠΈΠΌΡ‹ Π½Π° ΠΏΡ€ΠΎΡ‚яТСнии всСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ИмСна Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΈΠ΄ΠΈΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ объявлСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

1.3 ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΆΠΈΠ·Π½ΠΈ

ВрСмя ΠΆΠΈΠ·Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (глобальной ΠΈΠ»ΠΈ локальной) опрСдСляСтся ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ.

1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная глобально (Ρ‚.Π΅. Π²Π½Π΅ всСх Π±Π»ΠΎΠΊΠΎΠ²), сущСствуСт Π½Π° ΠΏΡ€ΠΎΡ‚яТСнии всСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

2. Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (Ρ‚.Π΅. ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π±Π»ΠΎΠΊΠ°) с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти register ΠΈΠ»ΠΈ auto, ΠΈΠΌΠ΅ΡŽΡ‚ врСмя ΠΆΠΈΠ·Π½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния Ρ‚ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹. Если локальная пСрСмСнная объявлСна с ΠΊΠ»Π°ΡΡΠΎΠΌ памяти static ΠΈΠ»ΠΈ extern, Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ врСмя ΠΆΠΈΠ·Π½ΠΈ Π½Π° ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ выполнСния всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

2. МодСли памяти ΠžΠ—Π£

ΠŸΠ°ΠΌΡΡ‚ΡŒ микропроцСссора Intel 80×86 ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ. НСпосрСдствСнно ΠΌΠΎΠΆΠ½ΠΎ Π°Π΄Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ 64К памяти сСгмСнту. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ 80×86 отслСТиваСт 4 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… сСгмСнта: сСгмСнт ΠΊΠΎΠ΄Π°, сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ…, сСгмСнт стСка ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСгмСнт. ΠšΠΎΠ΄ΠΎΠ²Ρ‹ΠΉ сСгмСнт содСрТит ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹; Π² ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ… хранится информация; сСгмСнт стСка ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ стСка; Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСгмСнт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ 80×86 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ 16-разрядных сСгмСнтных рСгистра (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚) — CS, DS, SS ΠΈ ES, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π°, Π΄Π°Π½Π½Ρ‹Ρ…, стСка ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ сСгмСнт соотвСтствСнно. Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π»ΡŽΠ±ΠΎΠΌ мСстС памяти, Π½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ, ΠΊΡ€Π°Ρ‚Π½ΠΎΠΌΡƒ 10. Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ. НапримСр, всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ сСгмСнта ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ адрСса.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ адрСс Π² 8086 состоит ΠΈΠ· Π΄Π²ΡƒΡ… 16-Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: адрСса сСгмСнта ΠΈ ΡΠΌΠ΅Ρ‰Π΅Π½ΠΈΡ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ адрСс сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ… — Ρ‚. Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π΅ DS — Ρ€Π°Π²Π΅Π½ 2F84 (ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ΅) ΠΈ Π²Ρ‹ ΠΆΠ΅Π»Π°Π΅Ρ‚Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ фактичСский адрСс Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0532 (основаниС 16) ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° сСгмСнта Π΄Π°Π½Π½Ρ‹Ρ…; ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ?

ВычислСниС адрСса Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π²Π»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сСгмСнтного рСгистра Π½Π° 4 Π±ΠΈΡ‚Π° (это эквивалСнтно ΠΎΠ΄Π½ΠΎΠΉ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Ρ†ΠΈΡ„Ρ€Π΅), Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ с Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ смСщСния.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ 20-Π±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Π΅ΡΡ‚ΡŒ фактичСский адрСс Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

рСгистр DS (послС сдвига): 0010 1111 1000 0100 0000 = 2F840

смСщСниС: 0000 0101 0011 0010 = 532

——————————— - ———————————————;

АдрСс: 0010 1111 1101 0111 0010 = 2FD72

Участок памяти Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ 16 Π±Π°ΠΉΡ‚ называСтся ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„ΠΎΠΌ, поэтому говорят, Ρ‡Ρ‚ΠΎ сСгмСнт всСгда начинаСтся Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π°.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ адрСс сСгмСнта всСгда являСтся 20-Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ числом, Π½ΠΎ ΡΠ΅Π³ΠΌΠ΅Π½Ρ‚Π½Ρ‹ΠΉ рСгистр ΠΈΠΌΠ΅Π΅Ρ‚ всСго 16 Π±ΠΈΡ‚ΠΎΠ² — поэтому младшиС 4 Π±ΠΈΡ‚Π° всСгда ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ Π½ΡƒΠ»ΡŽ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ — ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΡƒΠΆΠ΅ сказано — Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ сСгмСнта ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π°Π΄Ρ€Π΅ΡΠ°Ρ… памяти, ΠΊΡ€Π°Ρ‚Π½Ρ‹Ρ… 16, Ρ‚. Π΅. адрСсах, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… послСдниС 4 Π±ΠΈΡ‚Π° (ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½Ρ‹ΠΉ разряд) Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли рСгистр DS содСрТит Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2F84, Ρ‚ΠΎ Ρ„актичСски сСгмСнт Π΄Π°Π½Π½Ρ‹Ρ… начинаСтся Π² Π°Π΄Ρ€Π΅ΡΠ΅ 2F840.

Бтандартная запись адрСса ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ сСгмСнт: смСщСниС; Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ адрСс ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ 2F84: 0532. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ смСщСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ, данная ΠΏΠ°Ρ€Π° сСгмСнт: смСщСниС Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ; ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ адрСса относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ‚ΠΎΡ‡ΠΊΠ΅ памяти:

0000: 0123

0002: 0103

0008: 00A3

0010: 0023

0012: 0003

Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ (Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹) ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ. НапримСр, всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ сСгмСнта ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ адрСса, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ вся ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² Ρ†Π΅Π»ΠΎΠΌ Π·Π°ΠΉΠΌΠ΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 64 Кб — Π½ΠΎ Ρ‚ΠΎΠ³Π΄Π° Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… этой памяти Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΊΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ ΡΡ‚Π΅ΠΊ.

2.1 Π’ΠΈΠ΄Ρ‹ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти

Π’ 16-разрядных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 6 ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти: ΠΊΡ€ΠΎΡ…ΠΎΡ‚Π½ΡƒΡŽ, ΠΌΠ°Π»ΡƒΡŽ, ΡΡ€Π΅Π΄Π½ΡŽΡŽ, ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΡƒΡŽ, Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ.

Tiny (крохотная). Π­Ρ‚Π° модСль памяти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅ΠΌ достоинства ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΅Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ минимальная ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ памяти. ВсС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ сСгмСнтных рСгистра (CS, DS, SS ΠΈ ES) ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ‚Π΅ΠΊΠ°, Ρ€Π°Π²Π½Ρ‹ΠΉ 64К. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±Π»ΠΈΠΆΠ½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Small (малая). Π­Ρ‚Π° модСль Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π‘Π΅Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… располоТСны ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ся, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠΌΠ΅Ρ‚ΡŒ 64К ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ 64К Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΡ‚Π΅ΠΊΠ°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ near.

Medium (срСдняя). Π­Ρ‚Π° модСль годится для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ Ρ‚рСбуСтся Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ большой объСм Π΄Π°Π½Π½Ρ‹Ρ…. Для ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ Π΄Π»Ρ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ far. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ плюс стСк ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 64К, Π° ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄ΠΎ 1 Πœ.

Compact (компактная). Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту модСль Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π½Π΅Π²Π΅Π»ΠΈΠΊ, Π½ΠΎ Ρ‚рСбуСтся адрСсация большого объСма Π΄Π°Π½Π½Ρ‹Ρ…. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ far ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ Π½Π΅ Π΄Π»Ρ ΠΊΠΎΠ΄Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΊΠΎΠ΄ здСсь ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ 64К, Π° ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π°Π½Π½Ρ‹Ρ… — 1 Мб.

Large (большая). МодСли large ΠΈ huge ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Π”Π°Π»ΡŒΠ½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ для ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ 1 Мб Π΄Π»Ρ ΠΎΠ±ΠΎΠΈΡ….

Huge (огромная). Π”Π°Π»ΡŒΠ½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ для ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ Π΄Π°Π½Π½Ρ‹Ρ…. Borland C ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ статичСских Π΄Π°Π½Π½Ρ‹Ρ… 64К; модСль памяти huge отмСняСт это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅, позволяя статичСским Π΄Π°Π½Π½Ρ‹ΠΌ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 64К.

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

2.2 Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ исполняСмого Ρ„Π°ΠΉΠ»Π° Π² ΠžΠ—Π£ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ large

МодСли памяти устроСны ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Рассмотрим располоТСниС областСй памяти Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ large.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° содСрТит ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, присоСдинСнныС ΠΊ exe-Ρ„Π°ΠΉΠ»Ρƒ Π½Π° ΡΡ‚Π°Π΄ΠΈΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π²Π½Π΅ области ΠΊΠΎΠ΄Π°.

ΠžΠ±Π»Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… содСрТит Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΡΡ‚атичСскиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, строковыС константы.

Π’ ΡΡ‚Π΅ΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ функциям, ΠΈ Ρ€ΡΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, стСк растСт свСрху Π²Π½ΠΈΠ·, занимая ΠΏΡƒΠ»ΡŒΡΠΈΡ€ΡƒΡŽΡ‰ΡƒΡŽ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ пСрСполнСния стСка происходит Π΅Π³ΠΎ «Π½Π°Π»Π΅Π·Π°Π½ΠΈΠ΅» стСка Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹Π΄Π°Π΅Ρ‚ся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ сообщСниС. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° стСка ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² Options-Entry/Exit Code Generation-Stack options-Test stack overflow.

Π’ ΠΊΡƒΡ‡Ρƒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΈΡŽ программиста ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΈ. К Π½ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ, располоТСнному Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Рис. 1. БСгмСнтация для ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти Large

3. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π‘ΠΈ — язык сугубо ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½Ρ‹ΠΉ ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ логичСской Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся функция. Π€ΠΎΡ€ΠΌΠ°Ρ‚ описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

[Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния] имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²)

{Ρ‚Π΅Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

[return Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅_Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅] }

Π’ ΡΠΊΠΎΠ±ΠΊΠ°Ρ… ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ конструкции.

Π’ ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. НиТС рассмотрСны Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

3.1 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ

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

НапримСр:

void print_num (int i, int j)

{ printf («Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i=%d. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ j=%d. «, i, j);}

ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ:

print_num (6, 19);

3.2 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎ Π°Π΄Ρ€Π΅ΡΡƒ

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая мСняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… мСстами:

void change (int x, int y)

{ int k=x;

x=y;

y=k;

}

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x ΠΈ y, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ change, значСния фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, останутся Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ мСнялись мСстами значСния фактичСских Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

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

void change (int *x, int *y)

{ int k=*x;

*x=*y;

*y=k;

}

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° ΠΈΡ… Π°Π΄Ρ€Π΅ΡΠ° change (&a,&b);

3.3 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

int sum (int A [], int Dim); // ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

int sum (int A [], int Dim); // Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ

{

} // Ρ‚Π΅Π»ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

void main ()

{

int res, A [] = {2,1,3,2};

res = sum (A,

4);

} // Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sum

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π½ΠΈ массива ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ int *A.

int sum (int *A, int Dim); // ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

Для опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ sizeof (A) /sizeof (int) ΠΈΠ»ΠΈ sizeof (A) /sizeof (A []). НапримСр,

res = sum (A, sizeof (A) /sizeof (A []));

3.4 ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов

Бпособ 1. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ количСство элСмСнтов Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ массива являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Π½ΠΈ этого массива. Π’Π°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для массива int A [3] [4] имя массива, А ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int (*) [4], Ρ‚. Π΅. А — это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив ΠΈΠ· 4 элСмСнтов Ρ‚ΠΈΠΏΠ° int.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: имя массива ΠΈ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

int sum2 (int A [] [4], int M); // ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

int sum2 (int A [] [4], int M); // Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ

{

} // Ρ‚Π΅Π»ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

void main ()

{

int res, A [] = {{2,1,3,2}, {2,3,4,5}}; // Π΄Π²Π΅ строки, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столобца

res = sum2 (A,

2); // Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sum2

}

Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠΌΠ΅Π½ΠΈ массива ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄ int (*A) [4].

int sum2 (int (*A) [4], int M); // ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

Для опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ sizeof (A) /sizeof (A []). НапримСр,

res = sum2 (A, sizeof (A) /sizeof (A []));

Бпособ 2. Π”Ρ€ΡƒΠ³ΠΎΠΉ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ состоит Π² ΠΏΠΎΠ³Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ фактичСского Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ MxN Π² Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². Пи ΡΡ‚ΠΎΠΌ достаточно Π²Π·ΡΡ‚ΡŒ большой Ρ€Π°Π·ΠΌΠ΅Ρ€ стоки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 100.

int sum3 (int A [] [100], int M, int N); // ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

int sum3 (int A [] [100], int M, int N); // Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ

{

} // Ρ‚Π΅Π»ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

void main ()

{

int res, A [100] = {{2,1,3,2}, {2,3,4,5}}; /* Π΄Π²Π΅ строки, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столбца с Ρ‡Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ°Π·Π°Ρ†ΠΈΠ΅ΠΉ*/

res = sum3 (A, 2,4); // Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sum3

}

Бпособ 3. Π’Ρ€Π΅Ρ‚ΠΈΠΉ способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ состоит Π² ΡΠΌΡƒΠ»ΡΡ†ΠΈΠΈ фактичСского Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ MxN с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ M*N. Пи ΡΡ‚ΠΎΠΌ M*N Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ мСньшС 64К.

int sum4 (int A [], int M, int N); // ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

int sum4 (int A [], int M, int N); // Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ

{

} // Ρ‚Π΅Π»ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

void main ()

{

int res, A [4] = {{2,1,3,2}, {2,3,4,5}}; /* Π΄Π²Π΅ строки, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ столбца */

res = sum4 ((int *) A, 2,4); // Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ sum4

}

4. ВСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‚Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ тСстовой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠΌ

void test (void);

ΠŸΡ€ΠΈ тСстировании слСдуСт ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования:

Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Π° ΠΏΡ€ΠΈ тСстировании Π½Π΅ Ρ‚рСбуСтся Π½ΠΈΠΊΠ°ΠΊΠΈΡ… дСйствий,

ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΡΡ‚ΡŒ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ функция test Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСния Π½Π° ΡΠΊΡ€Π°Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΡΠ»ΡƒΡ‡Π°Π΅ возникновСния ошибок.

ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ: листинг тСстовой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ позволяСт ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ способы Π²Ρ‹Π·ΠΎΠ²Π° провСряСмой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π²ΡΠ΅ΡΡ‚ΠΎΡ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈ тСстировании Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС ΠΊΡ€Π°ΠΉΠ½ΠΈΠ΅ ситуации.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π² Ρ‡Π°ΡΡ‚ности:

Π½Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…,

ΠΏΡ€ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠΈ динамичСской памяти,

Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄ индСксов массива ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

5. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ задания

5.1 Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ классы памяти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ

Π§Ρ‚ΠΎ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°? Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия, ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΆΠΈΠ·Π½ΠΈ всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… n.

int n = 1;

void main ()

{

printf («%d», n);

static int n=3;

printf («%d», n);

while (n—)

{

printf («%d», n);

int n=10;

printf («%d», n);

printf («%d»: n+n);

}

}

5.2 Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с Π°Π΄Ρ€Π΅ΡΠ°ΠΌΠΈ

Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ large ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅ рСгистры содСрТат ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

CS = 1ADF, DS=1AE3, SS=1B26, SP=0FD2.

НайдитС Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ областСй памяти.

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… адрСсов для:

ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ int n=2, Ссли ΠΎΠ½Π° Π°) глобальная, Π±) статичСская, Π²) локальная;

содСрТимого указатСля char *str="Hello";

значСния адрСсной константы main;

содСрТимого указатСля int *A= (int *) malloc (1000).

5.3 ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

5.3.1 Π‘Π²ΠΎΠΏΠΈΠ½Π³

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

5.3.2 Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ индСксы ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

5.3.3 Π˜Π½Π΄Π΅ΠΊΡΡ‹ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ индСксы ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ.

5.3.4 Π£Π³ΠΎΠ» ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΡƒΠ³ΠΎΠ» Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈΠ· ΠΏΡ€ΠΎΡΡ‚ранства Rn.

5.3.5 ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ nxn.

5.4 Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ

Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

#include

void main ()

{

int a, b, div, mod;

printf («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа»);

scanf («%d%d», &a, &b);

div = a/b;

mod = a%b;

printf («n%d /%d =%d», a, b, div);

printf («n%d%%%d =%d», a, b, mod);

}

Π’Ρ‹Π΄Π΅Π»ΠΈΡ‚Π΅ Π² Ρ‚Ρ€ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, связанныС с Π²Π²ΠΎΠ΄ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, с Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ ΠΈ Ρ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹Π²ΠΎΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ функция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½Π°. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

5.5 ВСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

5.5.1 Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° массива

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сортируСт массив, А Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ n ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ Π½Π° ΠΌΠ΅ΡΡ‚Π΅ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ массива void sort (int A [], int n);

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ тСст этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² исходных Π΄Π°Π½Π½Ρ‹Ρ….

5.5.2 МиниМакс

Ѐункция Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ минимальноС ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ· Π΄Π²ΡƒΡ… чисСл Ρ‚ΠΈΠΏΠ° int ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ

void MinMax (int a, int b, int *pmin, int *pmax);

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ тСст для этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

6. Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ задания

6.1 Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ a β€’ x + b = 0 с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π° Π·Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ‚ΠΈΠΏΠ° float. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

int linur (float a, float b, float *px);

Ѐункция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚: a ΠΈ b — коэффициСнты уравнСния, px — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‡Π΅ΠΉΠΊΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ СдинствСнный ΠΊΠΎΡ€Π΅Π½ΡŒ уравнСния.

Ѐункция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚:

0 — Π½Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ,

1 — Π½Π°ΠΉΠ΄Π΅Π½ΠΎ СдинствСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅,

2 — любоС число являСтся Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ,

3 — Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ СдинствСнноС, Π½ΠΎ Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x.

Π’Ρ‹Π²ΠΎΠ΄ тСкстовой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ СдинствСнным. ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ linur.

6.2 Π§Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты массива

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива элСмСнтов Ρ‚ΠΈΠΏΠ° int. ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

int Chot (int A [], int DimA, int FoundA []);

6.3 НахоТдСниС простых чисСл

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ всС простыС числа ΠΈ ΠΈΡ… ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π΄ΠΎ long N Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. ΠΠ°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ΅ число m > 1 называСтся простым, Ссли ΠΎΠ½ΠΎ дСлится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° 1 ΠΈ Π½Π° ΡΠ°ΠΌΠΎ сСбя. ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

long AllProst (long N, long Prost [], int DimProst, int *flag);

6.4 ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ подстроки Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая опрСдСляСт количСство Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ подстроки Π² ΡΡ‚Ρ€ΠΎΠΊΡƒ. ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

int NumStrStr (char *str, char *substr);

6.5 ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† с ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ. ΠžΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ тСстированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

void MMult (float A [], float B [], float AB [], int m, int n, int k);

Π—Π΄Π΅ΡΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΡΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

7. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ задания

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ принадлСТности Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π΅Π²Ρ‹ΠΏΡƒΠΊΠ»ΠΎΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΡƒ Π±Π΅Π· самопСрСсСчСний.

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ tolowerrus ΠΈ toupperrus для ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠΉ русской Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠ· Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

БиблиографичСский список

1. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ Π‘. Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ / Π‘. ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½, Π”. Π ΠΈΡ‚Ρ‡ΠΈ. БПб.: НСвский Π΄ΠΈΠ°Π»Π΅ΠΊΡ‚, 2001.352 с.

2. ПодбСльский Π’. Π’. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ / Π’. Π’. ПодбСльский, Π‘. Π‘. Π€ΠΎΠΌΠΈΠ½. М.: Ѐинансы ΠΈ ΡΡ‚атистика, 2004.600 с.

3. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π‘ΠΈ. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°: ΠΌΠ΅Ρ‚ΠΎΠ΄. указания / сост. Π‘. П. Π’Ρ€ΠΎΡ„ΠΈΠΌΠΎΠ². Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π±ΡƒΡ€Π³: Π£Π“Π’Π£, 1998.14 с.

4. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π‘ΠΈ. ДинамичСскоС распрСдСлСниС памяти: ΠΌΠ΅Ρ‚ΠΎΠ΄. указания / сост. Π‘. П. Π’Ρ€ΠΎΡ„ΠΈΠΌΠΎΠ². Π•ΠΊΠ°Ρ‚Π΅Ρ€ΠΈΠ½Π±ΡƒΡ€Π³: Π£Π“Π’Π£, 1998.13 с.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ