Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ. ИзданиС 3-Π΅, исправлСнноС». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 60

Автор Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½

A8. ОбъявлСния

Π’ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ интСрпрСтируСтся ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, спСцифицируСтся объявлСниями; ΠΎΠ½ΠΈ Π½Π΅ всСгда Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ для описываСмых ΠΈΠΌΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ². ОбъявлСния, Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ опрСдСлСниями ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

объявлСниС:

    спСцификаторы-объявлСния список-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ²-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉΠ½Π΅ΠΎΠ±

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ Π² спискС-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ²-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ содСрТат ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹; спСцификаторы-объявлСния ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, состоящиС ΠΈΠ· спСцификаторов Ρ‚ΠΈΠΏΠ° ΠΈ класса памяти.

спСцификаторы-объявлСния:

    спСцификатор-класса-памяти спСцификаторы-объявлСниянСоб

    спСцификатор-Ρ‚ΠΈΠΏΠ° спСцификаторы-объявлСниянСоб

    ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° спСцификаторы-объявлСниянСоб

список-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ²-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ:

    ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ

    список-ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ²-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ , ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ

ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ:

    ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ

    ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ = ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ содСрТат ΠΏΠΎΠ΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ объявлСнию ΠΈΠΌΠ΅Π½Π°. ΠœΡ‹ рассмотрим ΠΈΡ… ΠΏΠΎΠ·ΠΆΠ΅, Π² A8.5. ОбъявлСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ, Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ спСцификатор Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚Π΅Π³ структуры ΠΈΠ»ΠΈ объСдинСния, Π»ΠΈΠ±ΠΎ - Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ элСмСнты пСрСчислСния; пустоС объявлСниС нСдопустимо.

A8.1. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ класса памяти


Класс памяти спСцифицируСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

спСцификатор-класса-памяти:

    auto

    register

    static

    extern

    typedef

Бмысл классов памяти обсуТдался Π² A4.

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

Новым являСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ адрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса register нСльзя, Π° класса auto ΠΌΠΎΠΆΠ½ΠΎ.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ static Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ класс статичСской памяти, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ, ΠΈ Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ этот спСцификатор Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΈ слуТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ; Π΅Π³ΠΎ Ρ€ΠΎΠ»ΡŒ Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ объяснСна Π² A11.2.

ОбъявлСниС со спСцификатором extern, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ для объявляСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π³Π΄Π΅-Ρ‚ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ; ΠΎ Π΅Π΅ Ρ€ΠΎΠ»ΠΈ Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ сказано Π² A11.2.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ typedef Π½Π΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ памяти ΠΈ Π½Π°Π·Π²Π°Π½ спСцификатором класса памяти ΠΈΠ· сообраТСний стандартности синтаксиса; Ρ€Π΅Ρ‡ΡŒ ΠΎΠ± этом спСцификаторС ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π² A8.9.

ОбъявлСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ спСцификатора класса памяти. Если ΠΎΠ½ Π² объявлСнии отсутствуСт, Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°: считаСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΈΠΌΠ΅ΡŽΡ‚ класс auto; Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, - класс extern; ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Π΅ Π²Π½Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, - статичСскиС ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ внСшниС связи (см. A10, A11).

А8.2. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠ°

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

спСцификатор-Ρ‚ΠΈΠΏΠ°:

    void

    char

    short

    int

    long

    float

    double

    signed

    unsigned

  структуры-ΠΈΠ»ΠΈ-объСдинСния-спСцификатор

  спСцификатор-пСрСчислСния

  typedef-имя

ВмСстС с int допускаСтся использованиС Π΅Ρ‰Π΅ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ слова - long ΠΈΠ»ΠΈ short; ΠΏΡ€ΠΈΡ‡Π΅ΠΌ сочСтаниС long int ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ смысл, Ρ‡Ρ‚ΠΎ ΠΈ просто long: Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ short int - Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ short. Π‘Π»ΠΎΠ²ΠΎ long ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒΡΡ вмСстС с double. Π‘ int ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π΅Π³ΠΎ модификациями (short, long ΠΈΠ»ΠΈ char) Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· слов signed ΠΈΠ»ΠΈ unsigned. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ· послСдних ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π² этом случаС подразумСваСтся int.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ signed Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° char ΠΈΠΌΠ΅Π»ΠΈ Π·Π½Π°ΠΊ; Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ ΠΊ Π΄Ρ€ΡƒΠ³ΠΈΠΌ цСлочислСнным Ρ‚ΠΈΠΏΠ°ΠΌ, Π½ΠΎ Π² этих случаях ΠΎΠ½ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π΅Π½.

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ описанных Π²Ρ‹ΡˆΠ΅ случаСв объявлСниС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ спСцификатора Ρ‚ΠΈΠΏΠ°. Если Π² объявлСнии Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ спСцификатора Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ имССтся Π² Π²ΠΈΠ΄Ρƒ Ρ‚ΠΈΠΏ int.

Для указания особых свойств ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π°ΡŽΡ‚ΡΡ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹:

ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ°:

    const

    volatile

ΠšΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡ‚ΡŒΡΡ с Π»ΡŽΠ±Ρ‹ΠΌ спСцификатором Ρ‚ΠΈΠΏΠ°. Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ const-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π² дальнСйшСм запрСщаСтся. Бмысл ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° volatile зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

БрСдства const ΠΈ volatile (ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²Ρ‹ΠΉ) Π²Π²Π΅Π΄Π΅Π½Ρ‹ стандартом ANSI. ΠšΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ const примСняСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² памяти, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ (ΠŸΠ—Π£), ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. НазначСниС ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° volatile - ΠΏΠΎΠ΄Π°Π²ΠΈΡ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, которая Π±Π΅Π· этого указания ΠΌΠΎΠ³Π»Π° Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π°. НапримСр, Π² ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…, Π³Π΄Π΅ адрСса рСгистров Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Ρ‹ Π½Π° адрСсноС пространство памяти, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° рСгистр Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ устройства ΠΌΠΎΠ³ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ объявлСн ΠΊΠ°ΠΊ volatile, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ компилятору ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ссылку Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ обязан ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎ явных ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°Ρ… ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ const-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

A8.3. ОбъявлСния структур ΠΈ объСдинСний

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° - это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, состоящий ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… элСмСнтов Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ОбъСдинСниС - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ содСрТит ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ОбъявлСния структур ΠΈ объСдинСний ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π²ΠΈΠ΄.

спСцификатор структуры-ΠΈΠ»ΠΈ-объСдинСния:

    структуры-ΠΈΠ»ΠΈ-объСдинСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π½Π΅ΠΎΠ± { список-объявлСний-структуры }

    структуры-ΠΈΠ»ΠΈ-объСдинСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

структура-ΠΈΠ»ΠΈ-объСдинСниС:

    struct

    union

Бписок-объявлСний-структуры являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ объявлСний элСмСнтов структуры ΠΈΠ»ΠΈ объСдинСния:

список-объявлСний-структуры:

    объявлСниС-структуры

    список-объявлСний-структуры объявлСниС-структуры

объявлСниС-структуры:

    список-спСцификаторов-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² список-структуры-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ;

список-спСцификаторов-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²:

    спСцификатор-Ρ‚ΠΈΠΏΠ° список-спСцификаторов-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²Π½Π΅ΠΎΠ±

    ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° список-спСцификаторов-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²Π½Π΅ΠΎΠ±

список-структуры-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ:

    структуры-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ

    список-структуры-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ , структуры-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ объявлСниС-структуры являСтся просто объявлСниСм для элСмСнтов структуры ΠΈΠ»ΠΈ объСдинСния. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ структуры, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа разрядов (Π±ΠΈΡ‚ΠΎΠ²). Π’Π°ΠΊΠΎΠΉ элСмСнт называСтся Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΏΠΎΠ»Π΅ΠΌ ΠΈΠ»ΠΈ просто ΠΏΠΎΠ»Π΅ΠΌ. Π•Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ отдСляСтся ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ поля Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ:

структуры-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ:

    ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ

    ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΎΠ± : константноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ°, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄

структуры-ΠΈΠ»ΠΈ-объСдинСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ { список-объявлСний-структуры }