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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 21

Автор C. Π‘ΠΎΡ‡ΠΊΠΎΠ²

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹

БущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ массива Ρ‚ΠΈΠΏΠ° char β€” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символьной строки. НапримСр, объявлСниС

char code[] = "abc";

ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ массив code Ρ‡Π΅Ρ‚Ρ‹Ρ€ΡŒΠΌΡ символами—'a', 'b', 'c' ΠΈ символом '\0', ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½ΡƒΡŽ строку.

Если Π² объявлСнии Ρ€Π°Π·ΠΌΠ΅Ρ€ массива ΡƒΠΊΠ°Π·Π°Π½, Π° Π΄Π»ΠΈΠ½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ строки ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΠΎ лишниС символы ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ объявлСниС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ трСхэлСмСнтный массив code Ρ‚ΠΈΠΏΠ° char:

char code[3] = "abcd";

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ символа ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° заносятся Π² массив code. Π‘ΠΈΠΌΠ²ΠΎΠ» d ΠΈ символ '\0' ΠΎΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‚ΡΡ.

Если ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ строка ΠΊΠΎΡ€ΠΎΡ‡Π΅, Ρ‡Π΅ΠΌ спСцифицированный Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, Ρ‚ΠΎ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ элСмСнты массива ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (символом '\0').

Бимвольной строкой ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ массив Ρ‚ΠΈΠΏΠ° char, Π½ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ char. НапримСр, Π² объявлСнии

char *ptr = "abcd";

ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ptr Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ адрСсом массива Ρ‚ΠΈΠΏΠ° char, содСрТащСго символы 'Π°', 'b', 'с', 'd', '\0'.

ОбъявлСниС Ρ‚ΠΈΠΏΠ°

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

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²ΠΈΠ΄ объявлСния Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово typedef. Π­Ρ‚ΠΎ объявлСниС позволяСт ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ осмыслСнныС ΠΈΠΌΠ΅Π½Π° Ρ‚ΠΈΠΏΠ°ΠΌ, ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π² языкС ΠΈΠ»ΠΈ создаваСмым ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ОбъявлСниС Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ Π±Π»ΠΎΡ‡Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ дСйствия, ΠΊΠ°ΠΊ ΠΈ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π›ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Однако Ρ‚Π΅Π³ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ пространство ΠΈΠΌΠ΅Π½, Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ посрСдством typedef, Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ пространство ΠΈΠΌΠ΅Π½ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΈ функциями.

ОбъявлСниС Ρ‚Π΅Π³Π°

ОбъявлСниС Ρ‚ΠΈΠΏΠ° структуры, объСдинСния ΠΈΠ»ΠΈ пСрСчислимого Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΊΠ°ΠΊ ΠΈ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ этих Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠ΄Π½Π°ΠΊΠΎ Π² объявлСнии Ρ‚ΠΈΠΏΠ° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π° Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ) ΠΎΠΏΡƒΡ‰Π΅Π½. ИмСнСм Ρ‚ΠΈΠΏΠ° структуры, объСдинСния ΠΈΠ»ΠΈ пСрСчислимого Ρ‚ΠΈΠΏΠ° являСтся Ρ‚Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС обязатСлСн.

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

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

enum status {

loss = -1,

bye,

tie = 0,

win

};

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

struct student {

char name [20];

int id, class;

}

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСчислимый Ρ‚ΠΈΠΏ с ΠΈΠΌΠ΅Π½Π΅ΠΌ status. Имя Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Π² ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… этого пСрСчислимого Ρ‚ΠΈΠΏΠ°. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ loss явно присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -1. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ bye ΠΈ tie Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ΡΡ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0, a win - со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ структурный Ρ‚ΠΈΠΏ с ΠΈΠΌΠ΅Π½Π΅ΠΌ student. ОбъявлСниС Ρ‚ΠΈΠΏΠ° student позволяСт Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ впослСдствии Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹Π΅ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… этого Ρ‚ΠΈΠΏΠ°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ объявлСниС struct student employee, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ структурная пСрСмСнная employee Ρ‚ΠΈΠΏΠ° student.

ОбъявлСниС typedef

Бинтаксис:

typedef <спСцификация Ρ‚ΠΈΠΏΠ°> <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> {,<ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ>…];

ОбъявлСниС typedef синтаксичСски Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ объявлСнию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ вмСсто спСцификации класса памяти записываСтся ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово typedef ΠΈ отсутствуСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€.

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

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

ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ², ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ посрСдством typedef, прописными Π±ΡƒΠΊΠ²Π°ΠΌΠΈ, ΠΎΠ΄Π½Π°ΠΊΠΎ это Π½Π΅ являСтся Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ языка.

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

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

typedef int WHOLE;

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

typedef struct club {

char name [30];

int size, year;

} GROUP;

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */

typedef GROUP *PG;

/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 4 */

typedef void DRAWF (int, int);

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ WHOLE ΠΊΠ°ΠΊ синоним для Ρ‚ΠΈΠΏΠ° int. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Ρ‚ΠΈΠΏ GROUP для структурного Ρ‚ΠΈΠΏΠ°, содСрТащСго Ρ‚Ρ€ΠΈ элСмСнта. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ спСцифицирован Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅Π³ club, Ρ‚ΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π»ΠΈΠ±ΠΎ Ρ‚ΠΈΠΏ GROUP, Π»ΠΈΠ±ΠΎ Ρ‚Π΅Π³ club. НапримСр, объявлСния GROUP stgr; ΠΈ struct club stgr, эквивалСнтны ΠΏΠΎ смыслу.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ имя Ρ‚ΠΈΠΏΠ° GROUP для объявлСния Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π’ΠΈΠΏ PG ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ GROUP, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ€Π°Π½Π΅Π΅ ΠΊΠ°ΠΊ структурный Ρ‚ΠΈΠΏ. НапримСр, объявлСниС PG ptr, эквивалСнтно объявлСнию struct club *pfr.

Π’ послСднСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ объявлСн Ρ‚ΠΈΠΏ DRAWF для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π΅ΠΉ значСния ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ‚ΠΈΠΏΠ° int. НапримСр, объявлСниС DRAWF box; эквивалСнтно объявлСнию void box(int, int);.

АбстрактныС ΠΈΠΌΠ΅Π½Π° Ρ‚ΠΈΠΏΠΎΠ²

Π’ Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 3.8.1 ΠΈ 3.8.2 Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ объявлСния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°ΠΌ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования. Однако ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· присвоСния Π΅ΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈ Π±Π΅Π· объявлСния ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Вакая конструкция, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π°Ρ Ρ‚ΠΈΠΏ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ, называСтся абстрактным ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ‚ΠΈΠΏΠ°. АбстрактныС ΠΈΠΌΠ΅Π½Π° Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Ρ€Π΅Ρ… контСкстах: Π² списках Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΈ объявлСнии Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния Ρ‚ΠΈΠΏΠ° ΠΈ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ sizeof. Бписки Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.5 "ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ". ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ привСдСния Ρ‚ΠΈΠΏΠ° ΠΈ опСрация sizeof ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 4.7.2 ΠΈ 4.3.2, соотвСтствСнно.

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

<спСцификация Ρ‚ΠΈΠΏΠ°> <абстрактный ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ>

Абстрактный ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ отличаСтся ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»Ρ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ содСрТит ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. Как ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² указатСля, массива ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ абстрактного описатСля слСдуСт ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π² Π½Π΅ΠΌ мСсто ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. ПослС этого интСрпрСтация проводится Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ описано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.3.2. Абстрактный ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ, состоящий Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΏΠ°Ρ€Ρ‹ пустых ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобок, нСдопустим, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Π½Π΅ позволяСт ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π³Π΄Π΅ подразумСваСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€: Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ скобок, Ρ‚ΠΎ описан простой Ρ‚ΠΈΠΏ (Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ спСцификациСй Ρ‚ΠΈΠΏΠ°), Π° Ссли ΠΏΠ΅Ρ€Π΅Π΄ скобками, Ρ‚ΠΎ Ρ‚ΠΈΠΏ функция.

ОбъявлСния typedef, рассмотрСнныС Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.8.2, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅, осмыслСнныС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ абстрактным ΠΈΠΌΠ΅Π½Π°ΠΌ Ρ‚ΠΈΠΏΠΎΠ² ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ контСкстС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ½ΠΈ.

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

long * /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

int (*)[5] /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

int (*)(void) /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */

PG /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 4 */

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Π½ΠΎ абстрактноС имя Ρ‚ΠΈΠΏΠ° для указатСля Π½Π° Ρ‚ΠΈΠΏ long.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Π½ΠΎ абстрактноС имя Ρ‚ΠΈΠΏΠ° для указатСля Π½Π° массив ΠΈΠ· пяти элСмСнтов Ρ‚ΠΈΠΏΠ° int.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Π½ΠΎ абстрактноС имя Ρ‚ΠΈΠΏΠ° для указатСля Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΡƒΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int.

Π’ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° PG, объявлСнного посрСдством typedef Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.8.2, Π·Π°Π΄Π°Π½ΠΎ абстрактноС имя Ρ‚ΠΈΠΏΠ° "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру с Ρ‚Π΅Π³ΠΎΠΌ club".

Π’Π«Π ΠΠ–Π•ΠΠ˜Π―

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

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