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

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

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

ИндСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для доступа ΠΊ элСмСнтам массива, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ.

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

Π°[b]

*(Π° + b)

*(b + Π°)

b[Π°]

Π’ соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ прСобразования Ρ‚ΠΈΠΏΠΎΠ² для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ слоТСния (смотри Ρ€Π°Π·Π΄Π΅Π» 4.3.4) цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ слоТСнии с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ (адрСсом) Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠΌΠ½ΠΎΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ°, адрСсуСмого ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ line ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ массив Ρ‚ΠΈΠΏΠ° int. ΠŸΡ€ΠΈ вычислСнии выраТСния line[i], Ρ†Π΅Π»ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i умноТаСтся Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° int. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ прСдставляСт i ячССк Ρ‚ΠΈΠΏΠ° int. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ складываСтся со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ указатСля line, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ адрСс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, смСщСнного Π½Π° i ячССк Ρ‚ΠΈΠΏΠ° int ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ line, Ρ‚.Π΅. адрСс i-Π³ΠΎ элСмСнта line.

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ шагом вычислСния индСксного выраТСния являСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ адрСсу ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ косвСнной адрСсации. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i-Π³ΠΎ элСмСнта массива line.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ индСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ line[0] прСдставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ индСксация элСмСнтов массива начинаСтся с нуля. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ line[5] ссылаСтся Π½Π° ΡˆΠ΅ΡΡ‚ΠΎΠΉ ΠΏΠΎ порядку слСдования Π² памяти элСмСнт массива.

Доступ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву

ИндСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ индСкса. Бинтаксис Ρ‚Π°ΠΊΠΎΠ³ΠΎ выраТСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1>[<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2>][<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅3>]…

ИндСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ интСрпрСтируСтся слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. Π‘Π½Π°Ρ‡Π°Π»Π° вычисляСтся самоС Π»Π΅Π²ΠΎΠ΅ индСксноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ β€” <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1>[<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2>]. Π‘ адрСсом, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ слоТСния <выраТСния1> ΠΈ <выраТСния2>, складываСтся (ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ слоТСния указатСля ΠΈ Ρ†Π΅Π»ΠΎΠ³ΠΎ) <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅3> ΠΈ Ρ‚. Π΄. <Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Π—> ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ <выраТСния> ΠΈΠΌΠ΅ΡŽΡ‚ Ρ†Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ косвСнной адрСсации осущСствляСтся послС вычислСния послСднСго индСксного выраТСния. Однако, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послСднСго указатСля адрСсуСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° массив, опСрация косвСнной адрСсации Π½Π΅ примСняСтся (смотри Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π½ΠΈΠΆΠ΅).

ВыраТСния с нСсколькими индСксами ΡΡΡ‹Π»Π°ΡŽΡ‚ΡΡ Π½Π° элСмСнты ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов. ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² языкС Π‘ΠΈ понимаСтся ΠΊΠ°ΠΊ массив, элСмСнтами ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивы. НапримСр, элСмСнтами Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

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

int Ρ€rΠΎΡ€[3][4][6];

int i, *ip, (*ipp)[6];

i = prop[0][0][1]; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

i = prop[2][1][3]; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

ip = prop[2][1]; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */

ipp = prop[2]; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 4 */

Массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ prop содСрТит 3 элСмСнта, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠ° int. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 1 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ элСмСнту (Ρ‚ΠΈΠΏΠ° int) массива prop. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ массив заполняСтся построчно, послСдний индСкс мСняСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ быстро. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ prop[0][0][2] ссылаСтся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ (Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ) элСмСнт массива ΠΈ Ρ‚. Π΄.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ вычисляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1) ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ индСкс 2 умноТаСтся Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива (4 Π½Π° 6), Π·Π°Ρ‚Π΅ΠΌ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° int ΠΈ прибавляСтся ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ указатСля prop. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив (Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 4 Π½Π° 6 элСмСнтов) Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС prop.

2) Π’Ρ‚ΠΎΡ€ΠΎΠΉ индСкс 1 умноТаСтся Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ 6-элСмСнтного массива Ρ‚ΠΈΠΏΠ° int ΠΈ прибавляСтся ΠΊ адрСсу, прСдставляСмому Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ prop[2].

3) ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт 6-элСмСнтного массива ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int, поэтому индСкс 3 умноТаСтся Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° int ΠΈ прибавляСтся ΠΊ адрСсу, прСдставляСмому Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ prop[2][1]. Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ адрСсуСт Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ элСмСнт массива ΠΈΠ· ΡˆΠ΅ΡΡ‚ΠΈ элСмСнтов.

4) На послСднСм шагС вычислСния выраТСния Ρ€rΠΎΡ€[2][1][3] выполняСтся косвСнная адрСсация ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся элСмСнт Ρ‚ΠΈΠΏΠ° int, располоТСнный ΠΏΠΎ вычислСнному адрСсу.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… 3 ΠΈ 4 прСдставлСны случаи, ΠΊΠΎΠ³Π΄Π° косвСнная адрСсация Π½Π΅ примСняСтся. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 3 Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ prop[2][1] прСдставляСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΠΈΠ· ΡˆΠ΅ΡΡ‚ΠΈ элСмСнтов Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ массивС prop. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля адрСсуСт массив, опСрация косвСнной адрСсации Π½Π΅ примСняСтся. Аналогично, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ вычислСния выраТСния prop[2] Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ 4 являСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля, Π°Π΄Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив.

Π’Ρ‹Π±ΠΎΡ€ элСмСнта

Бинтаксис:

<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>.<ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€>

<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> -> <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€>

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° элСмСнта позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту структуры ΠΈΠ»ΠΈ объСдинСния. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΈΠΏ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ синтаксичСской Ρ„ΠΎΡ€ΠΌΠ΅ <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> прСдставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° struct ΠΈΠ»ΠΈ union, Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ элСмСнт спСцифицированной структуры ΠΈΠ»ΠΈ объСдинСния. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ синтаксичСской Ρ„ΠΎΡ€ΠΌΠ΅ <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> прСдставляСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру ΠΈΠ»ΠΈ объСдинСниС, Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ элСмСнт спСцифицированной структуры.

ОбС синтаксичСскиС Ρ„ΠΎΡ€ΠΌΡ‹ выраТСния Π²Ρ‹Π±ΠΎΡ€Π° элСмСнта Π΄Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π—Π°ΠΏΠΈΡΡŒ

<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> -> <ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€>

для случая, ΠΊΠΎΠ³Π΄Π° <Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, эквивалСнтна записи

(*<Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅>).<ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€>

однако болСС наглядна.

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

struct pair {

int a;

inl b;

struct pair *sp;

} item, list[10];

item.sp = &item; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 1 */

(item.sp)->a = 24; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 */

list[8].b = 12; /* ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 3 */

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ адрСс структуры НСт присваиваСтся элСмСнту sp этой ΠΆΠ΅ структуры. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ структура item содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° сСбя.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ адрСсноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ item.sp с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π²Ρ‹Π±ΠΎΡ€Π° элСмСнта ->, ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнту Π°. Учитывая Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 1, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2 эквивалСнтСн записи

item.a = 24;

Π’ Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π² массивС структур ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ структуры.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ L-выраТСния

Π’ зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ выраТСния ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅, ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅, Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅, Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹Π΅, выраТСния присваивания ΠΈ выраТСния привСдСния Ρ‚ΠΈΠΏΠ°.

ΠŸΠ΅Ρ€Π²ΠΈΡ‡Π½Ρ‹Π΅ выраТСния рассмотрСны Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 4.2.4, 4.2.5, 4.2.6.

Π£Π½Π°Ρ€Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° с ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΅ΠΌΡƒ ΡƒΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

Бинтаксис:

<унарная-опСрация> <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄>

Π£Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ рассмотрСны Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.3.2.

Π‘ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

Бинтаксис:

<ΠΎΠΏΠ΅Ρ€Π°Π½Π΄1> <бинарная-опСрация> <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄2>

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ рассмотрСны Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… 4.3.3 β€” 4.3.9.

Π’Π΅Ρ€Π½Π°Ρ€Π½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠ°ΠΌΠΈ условной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ "?:".

Бинтаксис:

<ΠΎΠΏΠ΅Ρ€Π°Π½Π΄1> ? <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄2> : <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄3>

Условная опСрация рассмотрСна Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.3.10.

ВыраТСния присваивания ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания. Π£Π½Π°Ρ€Π½Ρ‹ΠΌΠΈ опСрациями присваивания ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ "++" ΠΈ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ "--". Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания β€” это простоС присваиваниС "=" ΠΈ составныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания. КаТдая составная опСрация присваивания прСдставляСт собой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с простой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ присваивания.

Бинтаксис Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ присваивания:

Π£Π½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания:

<ΠΎΠΏΠ΅Ρ€Π°Π½Π΄> ++

<ΠΎΠΏΠ΅Ρ€Π°Π½Π΄> --

++ <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄>

--<ΠΎΠΏΠ΅Ρ€Π°Π½Π΄>

Π‘ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания:

<ΠΎΠΏΠ΅Ρ€Π°Π½Π΄1> = <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄2>

<ΠΎΠΏΠ΅Ρ€Π°Π½Π΄1> <составноС-присваиваниС> <ΠΎΠΏΠ΅Ρ€Π°Π½Π΄2>

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ присваивания рассмотрСна Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.4.

ВыраТСния привСдСния Ρ‚ΠΈΠΏΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ привСдСния Ρ‚ΠΈΠΏΠ° для явного прСобразования Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ скалярного Ρ‚ΠΈΠΏΠ° (Ρ†Π΅Π»ΠΎΠ³ΠΎ, пСрСчислимого, ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅Π³ΠΎ, пустого, указатСля).