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

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

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

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ вСрсии языка пСрСчислСний Π½Π΅ Π±Ρ‹Π»ΠΎ, Π½ΠΎ ΠΎΠ½ΠΈ ΡƒΠΆΠ΅ нСсколько Π»Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ.

А8.5. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

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

    ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Π΅ΠΎΠ± собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ

собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ:

    ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

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

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

    собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ (список-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²)

    собствСнно-ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ (список-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²Π½Π΅ΠΎΠ±)

ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ:

    * список-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²-Ρ‚ΠΈΠΏΠ°Π½Π΅ΠΎΠ±

    * список-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²-Ρ‚ΠΈΠΏΠ°Π½Π΅ΠΎΠ± ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

список-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²-Ρ‚ΠΈΠΏΠ°:

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

    список-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²-Ρ‚ΠΈΠΏΠ° ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ°

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

A8.6. Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ

Бписок ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅ΠΉ располагаСтся сразу послС спСцификаторов Ρ‚ΠΈΠΏΠ° ΠΈ указатСля класса памяти. Π“Π»Π°Π²Π½Ρ‹ΠΉ элСмСнт любого ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Ρ - это ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡ‹ΠΉ ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€; Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ ΠΈΠ· Π½Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ состоит, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ собствСнно- ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ класса памяти относятся нСпосрСдствСнно ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ, Π° Π΅Π³ΠΎ Ρ‚ΠΈΠΏ зависит ΠΎΡ‚ Π²ΠΈΠ΄Π° ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Ρ. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ слСдуСт Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅: Ссли Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ появляСтся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ контСкстС, Ρ‡Ρ‚ΠΎ ΠΈ Π² ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Π΅, Ρ‚ΠΎ ΠΎΠ½ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ спСцифицируСмого Ρ‚ΠΈΠΏΠ°.

Если ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ спСцификаторы объявлСния, относящиСся ΠΊ Ρ‚ΠΈΠΏΡƒ (A8.2), ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ, Ρ‚ΠΎ объявлСниС ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π²ΠΈΠ΄ "T D", Π³Π΄Π΅ T - Ρ‚ΠΈΠΏ, a D - ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡŒ. Π­Ρ‚Π° запись ΠΈΠ½Π΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈΠ΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ любого ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»Ρ.

Π’ объявлСнии T D, Π³Π΄Π΅ D - просто ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ T.

Π’ объявлСнии T D, Π³Π΄Π΅ D ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

( D1 )

Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² D1 Ρ‚ΠΎΡ‚ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Π² D. Π‘ΠΊΠΎΠ±ΠΊΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ Ρ‚ΠΈΠΏ, Π½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π΅Π³ΠΎ "привязки" ΠΊ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌ Π² слоТных ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΡΡ….

A8.6.1. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π’ объявлСния T D, Π³Π΄Π΅ D ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

* список-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²-Ρ‚ΠΈΠΏΠ°Π½Π΅ΠΎΠ± D1

Π° Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° объявлСния T D1 Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° T", Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° D Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° список-ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²-Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° T". ΠšΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° *, относятся ΠΊ самому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, Π° Π½Π΅ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. Рассмотрим, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, объявлСниС

int *ap[];

Π—Π΄Π΅ΡΡŒ ap[] ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ D1; объявлСниС int ap[] слСдуСт Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ (см. Π½ΠΈΠΆΠ΅) ΠΊΠ°ΠΊ "массив ΠΈΠ· int": список ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° здСсь пуст, Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° Π΅ΡΡ‚ΡŒ "массив ΠΈΠ·". Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½Π° самом Π΄Π΅Π»Π΅ объявлСниС ap гласит: "массив ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° int". Π’ΠΎΡ‚ Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ объявлСний:

int i, *pi, *const cpi = &i;

const int ci = 3, *pci;

Π’ Π½ΠΈΡ… ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π»ΠΎΠ΅ i ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ pi. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля cpi Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ; cpi всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ мСсто, Π΄Π°ΠΆΠ΅ Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, станСт ΠΈΠ½Ρ‹ΠΌ. Π¦Π΅Π»ΠΎΠ΅ ci Π΅ΡΡ‚ΡŒ константа, ΠΎΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ (хотя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС). Π’ΠΈΠΏ указатСля pci произносится ΠΊΠ°ΠΊ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° const int"; сам ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ; ΠΏΡ€ΠΈ этом ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто, Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pci ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ нСльзя.

А8.6.2. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ массивов

Π’ объявлСния T D, Π³Π΄Π΅ D ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

D1 [константноС-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π½Π΅ΠΎΠ± ]

ΠΈ Π³Π΄Π΅ Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° объявлСния T D1 Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° Π’", Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° D Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° массив ΠΈΠ· T". Если константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ присутствуСт, Ρ‚ΠΎ ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ цСлочислСнным ΠΈ большС 0. Если константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ количСство элСмСнтов Π² массивС, отсутствуСт, Ρ‚ΠΎ массив ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Массив ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² арифмСтичСского Ρ‚ΠΈΠΏΠ°, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, структур ΠΈ объСдинСний, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… массивов (гСнСрируя ΠΏΡ€ΠΈ этом ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы). Π›ΡŽΠ±ΠΎΠΉ Ρ‚ΠΈΠΏ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ конструируСтся массив, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, структурой ΠΈΠ»ΠΈ массивом Π½Π΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ для ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива пустой ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрвая Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ. ΠΠ΅Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ массива ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ своС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ объявлСнии этого массива (A10.2), Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (A8.7). НапримСр, запись

float fa[17], *afp[17];

ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ массив ΠΈΠ· чисСл Ρ‚ΠΈΠΏΠ° float ΠΈ массив ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° числа Ρ‚ΠΈΠΏΠ° float. Аналогично

static int x3d[3][5][7];

ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ статичСский Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ†Π΅Π»Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 3 x 5 x 7. На самом Π΄Π΅Π»Π΅, Ссли Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ, x3d являСтся массивом ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ массив ΠΈΠ· пяти элСмСнтов, содСрТащих ΠΏΠΎ 7 Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ индСксирования E1[E2] ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ *(E1+E2). Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, нСсмотря Π½Π° Π°ΡΠΈΠΌΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ записи, индСксированиС - коммутативная опСрация. Учитывая ΠΏΡ€Π°Π²ΠΈΠ»Π° прСобразования, примСняСмыС для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° + ΠΈ массивов (A6.6, A7.1, A7.7), ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли E1 - массив, Π° E2 - Ρ†Π΅Π»ΠΎΠ΅, Ρ‚ΠΎ E1[E2] ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ E2-ΠΉ элСмСнт массива E1.

Π’Π°ΠΊ, x3d[i][j][k] ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ *(x3d[i][j]+k). ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, x3d[i][j], согласно A7.1, приводится ΠΊ Ρ‚ΠΈΠΏΡƒ "ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив Ρ†Π΅Π»Ρ‹Ρ…"; ΠΏΠΎ A7.7 слоТСниС Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° int. Из этих ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» слСдуСт, Ρ‡Ρ‚ΠΎ массивы Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ "построчно" (послСдниС индСксы ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‡Π°Ρ‰Π΅) ΠΈ Ρ‡Ρ‚ΠΎ пСрвая Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π² объявлСнии ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ количСство памяти, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ массивом, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² вычислСнии адрСса элСмСнта массива участия Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚.

А8.6.3. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ


Π’ Π½ΠΎΠ²ΠΎΠΌ способС объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ T D, Π³Π΄Π΅ D ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

D1 ( список-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² )

ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° объявлСния T D1 Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° T", Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² D Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° функция с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ список-Ρ‚ΠΈΠΏΠΎΠ²- ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ T". ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:

список-Ρ‚ΠΈΠΏΠΎΠ²-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

    список-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

    список-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² , ...

список-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

    объявлСниС-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

    список-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², объявлСниС-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

объявлСниС-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°:

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

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

ΠŸΡ€ΠΈ Π½ΠΎΠ²ΠΎΠΌ способС объявлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ список ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² спСцифицируСт ΠΈΡ… Ρ‚ΠΈΠΏΡ‹, Π° Ссли функция Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π½Π° мСстС списка Ρ‚ΠΈΠΏΠΎΠ² указываСтся ΠΎΠ΄Π½ΠΎ слово - void. Если список Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² заканчиваСтся ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ΠΌ ",...", Ρ‚ΠΎ функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ большС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‡Π΅ΠΌ число явно описанных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². (Π‘ΠΌ. A7.3.2.)

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

ΠŸΡ€ΠΈ старом способС объявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ T D, Π³Π΄Π΅ D ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

D1 ( список-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²Π½Π΅ΠΎΠ± )

ΠΈ Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° объявлСния T D1 Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° Π’", Ρ‚ΠΈΠΏ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² D Π΅ΡΡ‚ΡŒ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° функция ΠΎΡ‚ нСспСцифицированных Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ Π’". ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

список-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²: