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

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

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

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная Ρ‚ΠΈΠΏΠ° объСдинСниС с ΠΈΠΌΠ΅Π½Π΅ΠΌ Jack. Бписок объявлСний элСмСнтов содСрТит Ρ‚Ρ€ΠΈ объявлСния: указатСля Π° Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° char, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ b Ρ‚ΠΈΠΏΠ° char ΠΈ массива ΠΆ ΠΈΠ· 20 элСмСнтов Ρ‚ΠΈΠΏΠ° float. Π’ΠΈΠΏ объСдинСния Π½Π΅ ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Ρ‚Π΅Π³ΠΎΠΌ. ΠŸΠ°ΠΌΡΡ‚ΡŒ, выдСляСмая ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ jack, Ρ€Π°Π²Π½Π° памяти, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для хранСния массива f, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это самый Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ элСмСнт объСдинСния.

ОбъявлСниС массива

Бинтаксис:

[<спСцификация Ρ‚ΠΈΠΏΠ°]> <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> [<константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>];

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

ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° описатСлСм, ΡΠ²Π»ΡΡŽΡ‚ΡΡ элСмСнтом языка Π‘ΠΈ, Π° Π½Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ синтаксичСской конструкции.

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

ОбъявлСниС массива ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π΄Π²ΡƒΡ… синтаксичСских Ρ„ΠΎΡ€ΠΌ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅. ΠšΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° <описатСлСм>, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ Ρ‚ΠΈΠΏΠ° массив. Если <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> прСдставляСт собой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (имя массива), Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ массив элСмСнтов спСцифицированного Ρ‚ΠΈΠΏΠ°. Если ΠΆΠ΅ <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> прСдставляСт собой Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ (см. Ρ€Π°Π·Π΄Π΅Π» 3.3.1), Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ, Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ <спСцификации Ρ‚ΠΈΠΏΠ°> ΠΈ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части описатСля. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой Ρ‚ΠΈΠΏ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΈΠΏΠΎΠ² void ΠΈ функция. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, элСмСнты массива ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, пСрСчислимый, структурный Ρ‚ΠΈΠΏ, Π±Ρ‹Ρ‚ΡŒ объСдинСниСм, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, массивом.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки, опрСдСляСт число элСмСнтов Π² массивС. Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ элСмСнтов массива начинаСтся с нуля. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, послСдний элСмСнт массива ΠΈΠΌΠ΅Π΅Ρ‚ индСкс Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ мСньшС, Ρ‡Π΅ΠΌ число элСмСнтов Π² массивС.

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

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

<спСцификация Ρ‚ΠΈΠΏΠ°> <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> [<константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>] {<константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>]…;

КаТдоС константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках опрСдСляСт число элСмСнтов Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ массива, поэтому объявлСниС Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива содСрТит Π΄Π²Π° константных выраТСния, Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ β€” Ρ‚Ρ€ΠΈ ΠΈ Ρ‚. Π΄.

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

char Π°[2][3]

Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: сначала Π² памяти Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ элСмСнта ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки, Π·Π°Ρ‚Π΅ΠΌ Ρ‚Ρ€ΠΈ элСмСнта Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ хранСния послСдний индСкс массива мСняСтся быстрСС прСдпослСднСго. Для доступа ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту массива ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ индСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ описано Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.2.5 "Π˜Π½Π΄Π΅ΠΊΡΠ½Ρ‹Π΅ выраТСния".

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

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

int scores[10], game:

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

float matrix[10][15];

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

struct {

float Ρ…, Ρƒ;

} complex[100];

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

char *name[20];

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная Ρ‚ΠΈΠΏΠ° массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ scores ΠΈΠ· 10 элСмСнтов Ρ‚ΠΈΠΏΠ° int. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ с ΠΈΠΌΠ΅Π½Π΅ΠΌ game объявлСна ΠΊΠ°ΠΊ простая пСрСмСнная Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ matrix. Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, matrix прСдставляСт собой массив, состоящий ΠΈΠ· 10 элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся массивом ΠΈΠ· 15 элСмСнтов Ρ‚ΠΈΠΏΠ° float.

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ массив структур Ρ‚ΠΈΠΏΠ° complex. Он состоит ΠΈΠ· 100 элСмСнтов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива прСдставляСт собой структуру, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Π΄Π²Π° элСмСнта Ρ‚ΠΈΠΏΠ° float.

Π’ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Π³ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ объявлСн массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Массив содСрТит 20 элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° char.

ОбъявлСниС указатСля

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ β€” это пСрСмСнная, прСдназначСнная для хранСния адрСса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ содСрТит адрСс Ρ‚ΠΎΡ‡ΠΊΠΈ Π²Ρ…ΠΎΠ΄Π° Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

Бинтаксис:

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

ОбъявлСниС указатСля спСцифицируСт имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля ΠΈ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ эта пСрСмСнная. БпСцификация Ρ‚ΠΈΠΏΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ, пСрСчислимый, пустой, структурный Ρ‚ΠΈΠΏ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ объСдинСниС. Если спСцификация Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡƒΡ‰Π΅Π½Π°, прСдполагаСтся Ρ‚ΠΈΠΏ int.

Если <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> прСдставляСт собой ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (имя указатСля), Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ спСцифицированного Ρ‚ΠΈΠΏΠ°. Если ΠΆΠ΅ <ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ> прСдставляСт собой Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ (см. Ρ€Π°Π·Π΄Π΅Π» 3.3.1), Ρ‚ΠΎ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, опрСдСляСтся ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡΡ‚Π°Π²ΡˆΠ΅ΠΉΡΡ части описатСля ΠΈ спСцификации Ρ‚ΠΈΠΏΠ°. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° значСния Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ, пСрСчислимого Ρ‚ΠΈΠΏΠ°, структуры, объСдинСния, массивы, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ‚ΠΈΠΏ void. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° void ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° значСния любого Ρ‚ΠΈΠΏΠ°. Однако для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° void Π»ΠΈΠ±ΠΎ Π½Π°Π΄ ΡƒΠΊΠ°Π·ΡƒΠ΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно привСсти Ρ‚ΠΈΠΏ указатСля ΠΊ Ρ‚ΠΈΠΏΡƒ, ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΌΡƒ ΠΎΡ‚ void. НапримСр, Ссли объявлСна пСрСмСнная i Ρ‚ΠΈΠΏΠ° int ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ€ Π½Π° Ρ‚ΠΈΠΏ void

int i;

void *p;

Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Ρ€ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i

p = &i;

Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля нСльзя. Π’ БП Π’Π‘ нСльзя Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ косвСнной адрСсации (Π² БП MSC Π² этом случаС выдаСтся ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС).

Ρ€++; /* нСдопустимо */

(int *)Ρ€++; /* допустимо */

j = *p; /* нСдопустимо Π² БП Π’Π‘ */

МоТно ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с Ρ‚ΠΈΠΏΠΎΠΌ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° void. Π•Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСно ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° Ρ‚ΠΎΡ‚ Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трСбуСтся.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс памяти. Π Π°Π·ΠΌΠ΅Ρ€ памяти, Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ для адрСса, ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ этого адрСса зависит ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора языка Π‘ΠΈ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эти ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ зависят ΠΎΡ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ near, far, huge, ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ указатСля. ОбъявлСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ эти ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, рассмотрСны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.3.3.4.

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

Π’ стандартном Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ stdio.h ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° константа с ΠΈΠΌΠ΅Π½Π΅ΠΌ NULL. Она ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ГарантируСтся, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ адрСс NULL.

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

char *message;/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

im *Π°rrΠ°Ρƒ1 [10]; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

int (*pointer1)[10];/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */

struct list *next, *previous; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 4 */

struct list {/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 5 */

char *token;

int *count;

struct list *next;

} line;

struct id {/* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 6 */

unsigned int id_no;

struct name *pname;

} record;

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ message. Он ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° значСния Ρ‚ΠΈΠΏΠ° char.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ объявлСн массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ с ΠΈΠΌΠ΅Π½Π΅ΠΌ array1. Массив состоит ΠΈΠ· 10 элСмСнтов. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт прСдставляСт собой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° значСния Ρ‚ΠΈΠΏΠ° int.