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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«C++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 62

Автор Бтраустрап Π‘ΡŒΡΡ€Π½

Если Π² качСствС описатСля Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ снабТСнный ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ спСцификатором, Π²ΠΎΠ·Π³Π»Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ описаниС.

ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ Π² скобках эквивалСнтСн ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŽ Π±Π΅Π· скобок, Π½ΠΎ связку слоТных описатСлСй скобки ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим сСбС описаниС

T D1

Π³Π΄Π΅ T – спСцификатор Ρ‚ΠΈΠΏΠ° (ΠΊΠ°ΠΊ int ΠΈ Ρ‚.Π΄.), Π° D1 – ΠΎΠΏΡΠ°Ρ‚Π΅Π»ΡŒ. Допустим, Ρ‡Ρ‚ΠΎ это описаниС заставляСт ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΈΠΏ Β«... TΒ», Π³Π΄Π΅ Β«...Β» пусто, Ссли ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ D1 Π΅ΡΡ‚ΡŒ просто ΠΎΠ±Ρ‹Ρ‡Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ x Π² Β«int xΒ» Π΅ΡΡ‚ΡŒ просто int). Π’ΠΎΠ³Π΄Π°, Ссли D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

*D

Ρ‚ΠΎ Ρ‚ΠΈΠΏ содСрТащСгося ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Β«...ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° T.Β»

Если D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

* const D

Ρ‚ΠΎ Ρ‚ΠΈΠΏ содСрТащСгося ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Β«... констанный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° TΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΈ *D, Π½ΠΎ Π½Π΅ lvalue.

Если D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

amp;D

ΠΈΠ»ΠΈ

amp; const D

Ρ‚ΠΎ Ρ‚ΠΈΠΏ содСрТащСгося ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Β«... ссылка Π½Π° T.Β» ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ссылка ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ lvalue, ипользованиС const излишнС. НСвозмоТно ΠΈΠΌΠ΅Ρ‚ΡŒ ссылку Π½Π° void (void amp;).

Если D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

D (список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²)

Ρ‚ΠΎ содСрТащийся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Β«... функция, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ Π²ΠΎΠ·Ρ€Π°Ρ‰Π°ΡŽΡ‰Π°Ρ T.Β»

список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²: список_описаний_ΠΏΠ°Ρ€Π°ΠΌ opt ... opt

список_описаний_ΠΏΠ°Ρ€Π°ΠΌ: список_описаний_ΠΏΠ°Ρ€Π°ΠΌ , описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°

описаниС_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°: спСцификаторы_описания ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ спСцификаторы_описания ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ спСцификаторы_описания абстракт_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ спСцификаторы_описания абстракт_ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ = Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Если список_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² заканчиваСтся ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡Π΅ΠΌ, Ρ‚ΠΎ ΠΎ числС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² извСстно лишь, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Ρ€Π°Π²Π½ΠΎ ΠΈΠ»ΠΈ большС числа спСцифицированных Ρ‚ΠΈΠΏΠΎΠ² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²; Ссли ΠΎΠ½ пуст, Ρ‚ΠΎ функция Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. ВсС описния для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈ Π² Ρ‚ΠΈΠΏΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² числС ΠΈ Ρ‚ΠΈΠΏΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

Бписок_описаний_ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΈ прСобразования фактичСских ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ для контроля присвавания ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Если Π² описании ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎ это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π²Π·ΠΎΠ²Π°Ρ…, Π³Π΄Π΅ ΠΎΠΏΡƒΡ‰Π΅Π½Ρ‹ стоящиС Π² хвостС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΌΠΈ описаними. Однако, описаниС ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… описаниях.

По ТСланию ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°ΠΊ имя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Если ΠΎΠ½ присутствуСт Π² описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСльзя, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ сразу Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈΠ· области видимости. Если ΠΎΠ½ присутствуСт Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (#10), Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ Ρ„Π°Ρ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.

Если D1 ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄

D[ константноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ]

ΠΈΠ»ΠΈ

D[]

Ρ‚ΠΎ Ρ‚ΠΈΠΏ содСрТащСгося ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π΅ΡΡ‚ΡŒ Β«... массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° TΒ». Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΅ΡΡ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π²ΠΎ врСмя компиляции, ΠΈ Ρ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ int. (ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹Π΅ выраТСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² #12.) Если подряд ΠΈΠ΄ΡƒΡ‚ нСсколько спСцификаций «масив ΠΈΠ·Β», Ρ‚ΠΎ создаСтся ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив; константноС Π²Ρ‹Ρ€Π°ΠΆΠ½ΠΈΠ΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ‡Π»Π΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π­Ρ‚ΠΎΡ‚ пропуск ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° массив являСтся внСшним, ΠΈ настоящСС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚Ρ€ΠΎΠ΅ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, находится Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π·Π° опсатСлСм слСдуСт инициализация. Π’ этом случаС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π·ΠΌΠ΅Ρ€, вычислСнный исходя ΠΈΠ· числа Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов.

Массив ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ построСн ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· основных Ρ‚ΠΈΠΏΠΎΠ², ΠΈΠ· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈΠ· структуры ΠΈΠ»ΠΈ объСдинСния ΠΈΠ»ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива (для получСния ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива).

НС всС возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволяСт ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ синтаксис, допустимы. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅: функция Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ массив ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, хотя ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΡƒΠΊΠ·Π°Ρ‚Π΅Π»ΠΈ Π½Π° эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹; Π½Π΅ сущСствуСт массивов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, хотя ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ массивы ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

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

ОписаниС

int i; int *pi; int f (); int *fpi (); int (*pif) ();

описываСт Ρ†Π΅Π»ΠΎΠ΅ i, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ pi Π½Π° Ρ†Π΅Π»ΠΎΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ f, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Ρ†Π΅Π»ΠΎΠ΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ fpi , Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΠΎΠ΅, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ pif Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΡƒΡŽ Ρ†Π΅Π»ΠΎΠ΅. ОсбСнно ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ послСдниС Π΄Π²Π΅. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° *fpi() Π΅ΡΡ‚ΡŒ *(fpi()), ΠΊΠ°ΠΊ прСдполагаСтся Π² описании, ΠΈ Ρ‚Π° ΠΆΠ΅ конструкция трСбуСтся Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fpi, ΠΈ Π·Π°Ρ‚Π΅ΠΌ использовниС косвСнного обращСния Ρ‡Π΅Ρ€Π΅Π· (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ) Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ†Π΅Π»ΠΎΠ΅. Π’ описатСлС (*pif)() Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ скобки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для указания Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π·Π°Ρ‚Π΅ΠΌ вызываСтся. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ f ΠΈ fpi описаны ΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², Π° pif ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π²Π°ΡŽΡ‰Π°Ρ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΡƒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ОписаниС

const a = 10, *pc = amp;a, *const cpc = pc; int b, *const cp = amp;b;

описываСт a: Ρ†Π΅Π»ΡƒΡŽ константу, pc: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΡƒΡŽ константу, cpc: константный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΡƒΡŽ константу, b: Ρ†Π΅Π»ΠΎΠ΅ ΠΈ cp: константный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ†Π΅Π»ΠΎΠ΅. ЗначСния a, cpc ΠΈ cp Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ pc ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ cp. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ нСдопустимых Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

a = 1; a++; *pc = 2; cp = amp;a; cpc++;

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ допустимых Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ:

b = a; *cp = a; pc++; pc = cpc; ОписаниС

fseek (FILE*,long,int);

описываСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΡƒΡŽ Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния Π½Π΅ Π·Π°Π΄Π°Π½, ΠΎΠ½ прнимаСтся int (#8.2). ОписаниС

point (int = 0,int = 0);

описываСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ€ΠΎΠ², с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Ρ‚ΠΈΠΏΠ° int. Π•Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… способов:

point (1,2); point (1); point ();

ОписаниС

printf (char* ... );

описываСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ числом ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². НапримСр

printf (Β«hello, worldΒ»); printf (Β«a=%d b=%dΒ»,a,b);

Однако, всСгда Π΅Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ char*.

ОписаниС

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

описываСт массив чисСл с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ массив ΡƒΠΊΠ·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†,

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

описываСт массив Ρ†Π΅Π»Ρ‹Ρ…, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 3x6x7. БовсСм ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ: x3d являСтся массивом ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ…; ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов Π΄Π°Π½Π½Ρ‹Ρ… являСтся массивом ΠΈΠ· пяти массивов; ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· послСдних массивов являСтся массивом ΠΈΠ· сСми Ρ†Π΅Π»Ρ‹Ρ…. ПоялСниС ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ x3d, x3d[i], x3d[i][j], x3d[i][j][k] ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

8.4.2 ΠœΠ°ΡΡΠΈΠ²Ρ‹, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ индСксированиС

Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ появляСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° массива, ΠΎΠ½ прСобразуСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива. Из-Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ массивы Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ lvalue. По ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ опСрация индСксирования [] интСрпрСтируСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ E1[E2] ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΎ *((E1)+(E2)). Π’ силу ΠΏΡ€Π°Π²ΠΈΠ» прСобразования, примСняСмых ΠΊ +, Ссли E1 массив ΠΈ E2 Ρ†Π΅Π»ΠΎΠ΅, Ρ‚ΠΎ E1[E2] отностится ΠΊ E2-ΠΎΠΌΡƒ Ρ‡Π»Π΅Π½Ρƒ E1. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, нСсмотря Π½Π° Ρ‚Π°ΠΊΠΎΠ΅ проявлСниС асиммСтрии, индСксированиС являСтся ΠΊΠΎΠΌΠΌΡƒΡ‚Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ.

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ сообразным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ примСняСтся Π² случаС ΠΌΠ½Π³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. Если E являСтся n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом Ρ€Π°Π½Π³Π° i* j*...*k, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰Π΅Π΅ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ E прСобразуСтся Π² ΡƒΠΊΠ°Π·Ρ‚Π΅Π»ΡŒ Π½Π° (n-1)-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ€Π°Π½Π³Π° j*...*k. Если ΠΊ этому ΡƒΠΊΠ·Π°Ρ‚Π΅Π»ΡŽ, явно ΠΈΠ»ΠΈ нСявно, ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ индСксирования, примняСтся опСрация *, Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся (n-1)-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сам Ρ‚ΡƒΡ‚ ΠΆΠ΅ прСобразСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Рассмотрим, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,

int x[3][5];

Π—Π΄Π΅ΡΡŒ x – массив Ρ†Π΅Π»Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 3*5. Когда x Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ, ΠΎΠ½ прСобразуСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ…) 5 – элСмСнтный массив ΠΈΠ· Ρ†Π΅Π»Ρ‹Ρ…. Π’ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ x[i], ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ экввалСнтно *(x+i), x сначала прСобразуСтся, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ сказано, Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π·Π°Ρ‚Π΅ΠΌ i прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ x, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сбя ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ i Π½Π° Π΄Π»ΠΈΠ½Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‚Π΅Π»ΡŒ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠ· 5 Ρ†Π΅Π»Ρ‹Ρ…. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΡΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ косвСнная адрСсация для получСния массива (ΠΈΠ· 5 Ρ†Π΅Π»Ρ‹Ρ…), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ прСобразуСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ· Ρ†Π΅Π»Ρ‹Ρ…. Если Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ индСкс, снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€; Π½Π° этот Ρ€Π°Π· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Ρ†Π΅Π»ΠΎΠ΅.