ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

КакиС дСйствия нСдопустимы с указатСлями

УПК Π Π€ Π‘Ρ‚Π°Ρ‚ΡŒΡ 75. НСдопустимыС Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°

1. Π”ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ настоящСго КодСкса, ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСдопустимыми. НСдопустимыС Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π° Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡŽΡ€ΠΈΠ΄ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ силы ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ‹ Π² основу обвинСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для доказывания любого ΠΈΠ· ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π², прСдусмотрСнных ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ 73 настоящСго КодСкса.

2. К нСдопустимым Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°ΠΌ относятся:

1) показания ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ, обвиняСмого, Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ досудСбного производства ΠΏΠΎ ΡƒΠ³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΌΡƒ Π΄Π΅Π»Ρƒ Π² отсутствиС Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈΠΊΠ°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ случаи ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ Π·Π°Ρ‰ΠΈΡ‚Π½ΠΈΠΊΠ°, ΠΈ Π½Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹ΠΌ, обвиняСмым Π² судС;

2) показания ΠΏΠΎΡ‚Π΅Ρ€ΠΏΠ΅Π²ΡˆΠ΅Π³ΠΎ, свидСтСля, основанныС Π½Π° Π΄ΠΎΠ³Π°Π΄ΠΊΠ΅, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, слухС, Π° Ρ‚Π°ΠΊΠΆΠ΅ показания свидСтСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ источник своСй освСдомлСнности;

2.1) ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Ρ‹, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈΠ»ΠΈ свСдСния, входящиС Π² производство Π°Π΄Π²ΠΎΠΊΠ°Ρ‚Π° ΠΏΠΎ Π΄Π΅Π»Π°ΠΌ Π΅Π³ΠΎ Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ-розыскных мСроприятий ΠΈΠ»ΠΈ слСдствСнных дСйствий, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² части ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ 81 настоящСго КодСкса;

(ΠΏ. 2.1 Π²Π²Π΅Π΄Π΅Π½ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΎΡ‚ 17.04.2017 N 73-Π€Π—)

2.2) ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ-розыскных мСроприятий ΠΈΠ»ΠΈ слСдствСнных дСйствий свСдСния ΠΎ Ρ„Π°ΠΊΡ‚Π΅ прСдставлСния ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΡ‹ΠΌ, обвиняСмым ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ Π² соотвСтствии с Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΊΠΎΠ½ΠΎΠΌ «Πž Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΌ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ физичСскими Π»ΠΈΡ†Π°ΠΌΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² ΠΈ счСтов (Π²ΠΊΠ»Π°Π΄ΠΎΠ²) Π² Π±Π°Π½ΠΊΠ°Ρ… ΠΈ ΠΎ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°ΠΊΡ‚Ρ‹ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ» ΠΈ (ΠΈΠ»ΠΈ) указанная дСкларация ΠΈ свСдСния, содСрТащиСся Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΈ (ΠΈΠ»ΠΈ) свСдСниях, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ случаСв прСдставлСния Π΄Π΅ΠΊΠ»Π°Ρ€Π°Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠΏΠΈΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ (ΠΈΠ»ΠΈ) свСдСний для приобщСния ΠΊ ΡƒΠ³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΌΡƒ Π΄Π΅Π»Ρƒ;

(ΠΏ. 2.2 Π²Π²Π΅Π΄Π΅Π½ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΎΡ‚ 27.12.2019 N 498-Π€Π—)

2.3) ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ-розыскных мСроприятий ΠΈΠ»ΠΈ слСдствСнных дСйствий свСдСния ΠΎ Ρ„Π°ΠΊΡ‚Π΅ указания ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠ³ΠΎ, обвиняСмого Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ, прСдставлСнной ΠΈΠ½Ρ‹ΠΌ Π»ΠΈΡ†ΠΎΠΌ Π² соотвСтствии с Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΊΠΎΠ½ΠΎΠΌ «Πž Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΌ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ физичСскими Π»ΠΈΡ†Π°ΠΌΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΎΠ² ΠΈ счСтов (Π²ΠΊΠ»Π°Π΄ΠΎΠ²) Π² Π±Π°Π½ΠΊΠ°Ρ… ΠΈ ΠΎ внСсСнии ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°ΠΊΠΎΠ½ΠΎΠ΄Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°ΠΊΡ‚Ρ‹ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ», ΠΈ (ΠΈΠ»ΠΈ) свСдСния ΠΎ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π²Π°Π΅ΠΌΠΎΠΌ, обвиняСмом, содСрТащиСся Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΈ (ΠΈΠ»ΠΈ) свСдСниях, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΡ‹Ρ… ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ случаСв прСдставлСния Π΄Π΅ΠΊΠ»Π°Ρ€Π°Π½Ρ‚ΠΎΠΌ ΠΊΠΎΠΏΠΈΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ (ΠΈΠ»ΠΈ) свСдСний для приобщСния ΠΊ ΡƒΠ³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΌΡƒ Π΄Π΅Π»Ρƒ;

(ΠΏ. 2.3 Π²Π²Π΅Π΄Π΅Π½ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΎΡ‚ 27.12.2019 N 498-Π€Π—)

3) ΠΈΠ½Ρ‹Π΅ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π°, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ с Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ настоящСго КодСкса.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

БинтаксичСски ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ осущСствляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


Π³Π΄Π΅ @ β€” Π·Π½Π°ΠΊ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (-, +, * ΠΈ Ρ‚.Π΄.),
Ρ‚ΠΈΠΏ β€” Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния.

НапримСр, функция пСрСмноТСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записана ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π›ΡŽΠ±ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ записи (Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ):

Ѐункция-опСрация описываСтся ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ любая другая функция. ИспользованиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ – это лишь сокращСнная запись явного Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ Π΄Π²Π° способа описания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ пСрСопрСдСляСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

МоТно ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ значСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ:

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΡƒΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

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

Если ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΈ Ρ‚Π°, ΠΈ другая, Ρ‚ΠΎ ΠΈ aa@ ΠΈ @aa ΡΠ²Π»ΡΡŽΡ‚ΡΡ ошибками.

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

Если бинарная опСрация пСрСгруТаСтся друТСствСнной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Ρ‚ΠΎ Π² спискС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ±Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния
ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² пСрСопрСдСляСмой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‚.Π΅. компилятор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ пСрСстановку ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² мСстами, Π΄Π°ΠΆΠ΅ Ссли базовая опСрация допускаСт это. НапримСр, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° опСрация слоТСния комплСксного ΠΈ вСщСствСнного чисСл:

Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ слоТСния Π΄Π²Π°ΠΆΠ΄Ρ‹:

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ индСксирования ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ () позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ синтаксис Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса (имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΊΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ скобками). ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² скобках ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ [] позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ синтаксис доступа ΠΊ элСмСнтам массива (имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° с ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ скобками).

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния
ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания

Π›ΡŽΠ±ΠΎΠΉ конструктор вызываСтся явно Π»ΠΈΠ±ΠΎ нСявно Π² Ρ‚ΠΎΠΌ случаС, Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ класса.
Рассматривая Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΌΡ‹ использовали конструктор ΠΊΠΎΠΏΠΈΠΈ. Π”ΠΎ провСдСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сущСствовал Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π» создан ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ конструктора ΠΊΠΎΠΏΠΈΠΈ. Однако Ссли Π±Ρ‹ сущСствовало нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΈ Π±Ρ‹Π»Π° Π±Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² присваивании Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° элСмСнтам Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· конструкторов Π½Π΅ вызываСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠΆΠ΅ Π±Ρ‹Π» создан. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ происходит «повСрхностно», Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ всСгда допустимо. НапримСр, нСдопустимо ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ массивов ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.
Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ присваиваниС, Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ устраиваСт, Ρ‚ΠΎ опСрация присваивания ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π°.
Π”ΠΎΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса String ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ присваивания:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния:
ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ выдСлСния памяти

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ создания ΠΈ уничтоТСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² динамичСской памяти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Врудности ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с указатСлями

Ничто Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ большС нСприятностСй, Ρ‡Π΅ΠΌ Β«Π΄ΠΈΠΊΠΈΠΉΒ» ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ! Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΎΠ±ΠΎΡŽΠ΄ΠΎΠΎΡΡ‚Ρ€ΠΎΠ΅ ΠΎΡ€ΡƒΠΆΠΈΠ΅: ΠΈΡ… возмоТности ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ±Π΅Π·Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ ошибки Π² Π½ΠΈΡ… особСнно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ.

ΠžΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ошибка Π² самом ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ Π½ΠΈΠΊΠ°ΠΊ сСбя Π½Π΅ проявляСт. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого указатСля. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ обращаСтся ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ ячСйкС памяти. ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π° ΠΏΡ€ΠΈ записи ΠΈΡΠΊΠ°ΠΆΠ°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, хранящиСся Π² памяти, ΠΈΠ»ΠΈ портится участок ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях ошибка ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ вовсС ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ·ΠΆΠ΅ Π² Ρ„ΠΎΡ€ΠΌΠ΅, Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ Π½Π° Π΅Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ошибки, связанныС с указатСлями, особСнно Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠ±Π΅Π·Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с указатСлями слСдуСт ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΡΠΎΠ±ΡƒΡŽ ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с указатСлями. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ :

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10 Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ нСизвСстной области памяти. Рассмотрим, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это происходит. Π₯отя ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Ρ€ Π½Π΅ Π±Ρ‹Π»ΠΎ присвоСно Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ *Ρ€ = Ρ… ΠΎΠ½ ΠΈΠΌΠ΅Π» Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ (ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅!) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ здСсь ΠΈΠΌΠ΅Π»Π° мСсто ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ записи Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π΄Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π’ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… такая ошибка часто остаСтся Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ мСста, Ρ‚ΠΎ «выстрСл Π½Π°ΡƒΠ³Π°Π΄Β» скорСС всСго Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΎΠΌΒ». Π‘ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Β«ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒΒ» Π² Π½Π΅Π΅ возрастаСт.

Π’ Ρ‚Π°ΠΊΠΎΠΌ простом случаС Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов выводят ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Однако подобная ошибка ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ Π·Π°Π²ΡƒΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Ρ‚ΠΎΠ³Π΄Π° компилятор Π½Π΅ смоТСт Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Π΅Π΅.

Вторая распространСнная ошибка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² простом Π½Π΅Π΄ΠΎΡ€Π°Π·ΡƒΠΌΠ΅Π½ΠΈΠΈ ΠΏΡ€ΠΈ использовании указатСля:

записан Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Он присваиваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 10 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ адрСс, Π° Π½Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ выглядит Ρ‚Π°ΠΊ:

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ компиляторов ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Ρ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ… Π²Ρ‹Π²Π΅Π΄ΡƒΡ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС, Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, компилятор Π½Π΅ смоТСт Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ эту ΠΎΡˆΠΈΠ±ΠΊΡƒ Π² Π±ΠΎΠ»Π΅Π΅ Π·Π°Π²ΡƒΠ°Π»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° типичная ошибка происходит ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² располоТСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² памяти. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚Ρƒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ извСстно ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² памяти, Π±ΡƒΠ΄ΡƒΡ‚ Π»ΠΈ ΠΎΠ½ΠΈ располоТСны Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΈΡ… располоТат Π΄Ρ€ΡƒΠ³ΠΈΠ΅ компиляторы. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ нСдопустимо. НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°

Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π°. (Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ситуациях ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ это Π΄Π΅Π»Π°ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ€Π΅Π΄ΠΊΠΎ.)

ΠŸΠΎΡ…ΠΎΠΆΠ°Ρ ошибка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, ΠΊΠΎΠ³Π΄Π° дСлаСтся нСобоснованноС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ располоТСнии массивов. Иногда, прСдполагая, Ρ‡Ρ‚ΠΎ массивы располоТСны рядом, ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½ΠΈΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ указатСля, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π’Π°ΠΊ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния массивам first ΠΈ second нСльзя. Если компилятор размСстит массивы рядом, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ привСсти ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ. Однако подобная ошибка особСнно нСприятна Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π½Π΅Π·Π°ΠΌΠ΅Ρ‡Π΅Π½Π½ΠΎΠΉ, Π° ΠΏΠΎΡ‚ΠΎΠΌ компилятор Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ массивы ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполнится Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‡Π΅Π½ΡŒ опасной ошибки. ΠŸΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ сами Π½Π°ΠΉΡ‚ΠΈ Π΅Π΅, Π½Π΅ подсматривая Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ объяснСниС.

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Β«ΠΊΠΎΠ²Π°Ρ€Π½Ρ‹ΠΌΠΈΒ», Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΎΡ‚ΠΊΠ°Π·Π° ΠΎΡ‚ ΠΈΡ… использования. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ лишь Π±Ρ‹Ρ‚ΡŒ остороТным ΠΈ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ указатСля Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠ± указатСлях Π² Π‘ΠΈ: присваиваниС, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ массивам

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ вас, Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ описаны основныС свСдСния ΠΎΠ± указатСлях Π² языкС Π‘ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с указатСлями (объявлСниС, взятиС адрСса, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅) рассмотрСны вопросы бСзопасности Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π½ΠΈΠΌΠΈ. К соТалСнию, Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π²Ρ‹ Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ опСрациям сравнСний ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Однако, ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ°ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с массивами. ВсС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ компилятором gcc (восьмой вСрсии).

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

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡Π΅ΠΊ лишь ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄Π»ΠΈΠ½Ρƒ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… адрСсов. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ адрСс, Ρ‚ΠΎ Π΅Π³ΠΎ адрСс Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅. Π’ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ ptr. АдрСс ΠΆΠ΅ самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ptr сохраняСтся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ pptr. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅Π΄ Π΅Ρ‘ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊ ампСрсанда (&). НаконСц, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, Ρ‚.Π΅. ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (содСрТимоС) ΠΏΠΎ адрСсу, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΌΡƒ Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅, имя указатСля прСдваряСтся Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ, ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ объявлСнии. ΠŸΠΎΡ‡Ρ‚ΠΈ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ достаточно Ρ‡Ρ‚ΠΎΠ±Ρ‹ «Ρ€Π°ΡΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ» ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ pptr ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎ адрСсу Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ Π² ptr, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π²Π° Ρ€Π°Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ разымСнования.

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

ИзмСнСния значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· адрСс Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ. НапримСр:

Как Π±Ρ‹Π»ΠΎ сказано Π²Ρ‹ΡˆΠ΅, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ хранят адрСса. ЕстСствСнно, Ρ‡Ρ‚ΠΎ адрСса ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ячСйки Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½ΠΎ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ: адрСс стСка ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, адрСс Π½Π°Ρ‡Π°Π»Π° сСгмСнта ΠΊΠΎΠ΄Π°, адрСс ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ядра ОБ, адрСс Π² ΠΊΡƒΡ‡Π΅ ΠΈ Ρ‚. Π΄. Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ всС адрСса ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Ρ‚Π΅ участки памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ (доступ для чтСния), ΠΈΠ»ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя Π·Π°Ρ‚ΠΈΡ€Π°Ρ‚ΡŒ. Π’ случаС, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ участку, доступному Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ Segmentation Fault (SF).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² языкС Π‘ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ макрос с ΠΈΠΌΠ΅Π½Π΅ΠΌ NULL, для обозначСния указатСля с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ адрСсом. Π”Π°Π½Π½Ρ‹ΠΉ адрСс ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой для сигнала ΠΎΠ± ошибкС ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Ρ‡Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ этому адрСсу, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ случаС Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ пустому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ.

И Π΅Ρ‰Ρ‘, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. НапримСр:

Π­Ρ‚ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Ρ€Π΅Π· адрСса ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС простых ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π½Π° Ρ‚ΠΎΠΆΠ΅ самоС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p2 ΠΊΠ°ΠΊ Π±Ρ‹ являСтся псСвдонимом (alias) для p1.

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ указатСлями. Π’ случаС Π²Ρ‹Π·ΠΎΠ²Π° Ρ‚Π°ΠΊΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ½ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² свои ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ. ЕдинствСнноС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ адрСса, содСрТащиСся Π² указатСлях ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…. И с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… адрСсов, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° стандартная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя цСлочислСнными ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Π—Π΄Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π° ΠΈ b ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ своими значСниями Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ содСрТат Π½Π΅ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ адрСс). ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Π΅Ρ‰Ρ‘ Ρ€Π°Π·, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ ΠΏΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ адрСс, присвоив ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΠΈ массивы

ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Ρ‹Π΅ (const) ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Напомним, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с постоянным, фиксированным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово const ΠΏΠ΅Ρ€Π΅Π΄ Π΅Ρ‘ ΠΈΠΌΠ΅Π½Π΅ΠΌ (Π΄ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ послС). НапримСр:

Для объявлСния указатСля Π½Π° постоянноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово const Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠŸΠ•Π Π•Π” Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ Π±Ρ‹Π»Π° создана пСрСмСнная-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΡΡΡ‹Π»Π°ΡŽΡ‰Π΅Π΅ΡΡ Π½Π° постоянноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π‘Π»ΠΎΠ²ΠΎ const ΠΏΠ΅Ρ€Π΅Π΄ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ нСльзя ΠΌΠ΅Π½ΡΡ‚ΡŒ содСрТимоС Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ (ΠΏΡƒΡ‚Ρ‘ΠΌ разымСнования, обращСния ΠΊ ячСйкС). Но сама пСрСмСнная ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ постоянной Π½Π΅ являСтся. А Π·Π½Π°Ρ‡ΠΈΡ‚, Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ адрСс. НапримСр, адрСс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ячСйки Π² массивС.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² языкС Π‘ΠΈ

Π’Π΅ΠΌΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ довольно слоТна ΠΈ ΠΌΠ½Π΅ часто ΠΏΡ€ΠΈΡΡ‹Π»Π°ΡŽΡ‚ вопросы ΠΏΠΎ Π½Π΅ΠΉ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‚Π΅ΠΌΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

РСкомСндуСмая Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ с указатСлями, сначала посмотрим, ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² Π‘ΠΈ.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ β€” это прямо ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Ρƒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Π·Π°Π΄Π°Π»ΠΈ Ρ†Π΅Π»ΠΎΠ΅ число, массив ΠΈ вСщСствСнноС число. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΠΌΡ‹ явно Π΄Π°Π»ΠΈ имя элСмСнту Π΄Π°Π½Π½Ρ‹Ρ….

Если ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот элСмСнт Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΅Π³ΠΎ имя.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ рСкомСндуСтся Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ? Π’Ρ€ΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹:

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° 1. БоблюдСниС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° изоляции ΠΊΠΎΠ΄Π°

Π’ языкС Π‘ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π­Ρ‚ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ копия Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² размСщаСтся Π½Π° стСкС. ПослС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ эти Π΄Π°Π½Π½Ρ‹Π΅ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ программист ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ влияния Π½Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ эти Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΠΎΠΊΠ°ΠΆΡƒΡ‚.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° 2. ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²Ρ‹Π·ΠΎΠ² Π² ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ΅

ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ имя элСмСнта Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ с Π½ΠΈΠΌ происходит Π²ΠΎ врСмя ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° 3. Π‘Π°ΠΌΠΎΠ΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄

Если ΠΌΡ‹ Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… осмыслСнныС ΠΈΠΌΠ΅Π½Π°, Ρ‚ΠΎ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ. НапримСр:

Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ язык Π‘ΠΈ унивСрсалСн ΠΈ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ способов ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΈ Ρ‚Π°ΠΊΠΎΠΉ способ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ?

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ β€” это пСрСмСнная, которая содСрТит адрСс Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² памяти.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с указатСлями ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:
& β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (&x β€” адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x)

* β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ адрСсу (*px β€” Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ адрСсу px)

Рассмотрим участок памяти. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ адрСсу 54100 Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° символьная пСрСмСнная char x;

ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

ΠŸΡ€ΠΈ завСдСния указатСля ΠΌΡ‹ сразу Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ компилятору, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π·Π°Π²Π΅Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° char. Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ Π² ΠΈΠΌΠ΅Π½Π°Ρ… рСкомСндуСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с символа Β«pΒ».

Π’Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. Когда комплятор выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Β«char xΒ», Ρ‚ΠΎ выдСляСтся ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ x β€” это символ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ это однобайтовая пСрСмСнная. Но ΠΊΠΎΠ³Π΄Π° компилятор выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Β«char *pxΒ», Ρ‚ΠΎ выдСляСтся ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ 4 Π±Π°ΠΉΡ‚Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ адрСс (Π² 32-Ρ… Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ систСмС) Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°.

*px β€” читаСтся ΠΊΠ°ΠΊ Β«Π²Π·ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ адрСсу, xранящСмуся Π² pxΒ»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ:

Для этого ΠΌΡ‹ пишСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

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

Но Ρ‚ΡƒΡ‚ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ остороТным. Если Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ Π»Π΅ΠΆΠΈΡ‚ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚ΠΎ эта ситуация называСтся висячий ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ px β€” это висячий ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ДСйствия с самим ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ px ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ пострадаСт. Но Ссли ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ дСйствиС *px Π½Π°Π΄ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, которая Π½Π΅ Π±Ρ‹Π»Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‚ΠΎ опСрационная систСма ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ дСйствиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅: Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»Π° Π½Π΅Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΊΡ€Ρ‹Ρ‚Π°Β».

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ссылкС. Π‘Π»ΠΎΠ²ΠΎ «ссылка» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° ссылаСмся Π½Π° адрСс этого значСния. Π’ этом случаС ΠΌΠΎΠΆΠ½ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…. Π₯отя ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ послС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½ΠΎ ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ΠΈ это ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ значСния сохранится послС Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ИмСнно поэтому ΠΈΡ… часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚.

НСдостатки ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π“Π»Π°Π²Π½Ρ‹Π΅ нСдостатки ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

1. ΠΠ°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² изоляции ΠΊΠΎΠ΄Π°

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

2. ΠžΡ‚Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

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

3. ΠŸΠ»ΠΎΡ…Π°Ρ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°

ΠŸΡ€ΡΠΌΠΎΠ΅ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ являСтся самоочСвидной Π²Π΅Ρ‰ΡŒΡŽ. Если ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ x++, Ρ‚ΠΎ сразу ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ происходит, Π° Π²ΠΎΡ‚ Ссли ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ (*px)++ ΠΈΠ»ΠΈ *px++, Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ процСсс, Π½ΡƒΠΆΠ½ΠΎ Π²Π΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒΡΡ.

Π‘Ρ€Π°Π²Π½ΠΈΠΌ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΊΠΎΠ΄Π°. Код с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ:

ΠΈ ΠΊΠΎΠ΄ с указатСлями

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ с указатСлями Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Ρ…ΡƒΠΆΠ΅, Π° прСимущСств Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½Π° это послСдуСт вопрос: «А ΠΊΠ°ΠΊ Ρ‚ΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?Β»

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ помСняСт значСния Π»ΡŽΠ±Ρ‹Ρ… элСмСнтов массива.

Если ΠΆΠ΅ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ: Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ внСшниС значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” Ρƒ вас Π½Π΅Π²Π΅Ρ€Π½ΠΎ спроСктирована ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

Π’ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ спроСктированной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π²ΠΈΠ΄Π° элСмСнта Π΄Π°Π½Π½Ρ‹Ρ…:

Для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ мСста Π½Π΅Ρ‚. Но Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ Π½Π°Π΄ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ.

ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° вопросы

Вопрос

ΠœΡ‹ сначала ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ адрСс a Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ AddFive, Π·Π°Ρ‚Π΅ΠΌ создали ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ int px(Π½ΠΎ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ?), Π΄Π°Π»Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ адрСсу указатСля ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»ΠΈ Π½Π° 5. Но Ρ‚ΡƒΡ‚ нСпонятно, Ρ€Π°Π·Π²Π΅ Ρ‚Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ? Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ сначала адрСс ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, ΠΊΠ°ΠΊ Π’Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Ρ€Π°Π½Π΅Π΅ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡΡ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠžΡ‚Π²Π΅Ρ‚

Π’ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ создаСтся. Π’ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор ΠΌΠΎΠ³ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. АдрСс ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ px Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ этот адрСс ΡƒΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ px ΡƒΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½ΡƒΠΆΠ½Ρ‹ΠΉ адрСс.

Вопрос

Π― ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΊΠΎΠ΄ Π² CodeBlocks. Если ΠΌΡ‹ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями. Π€ΠΎΡ‚ΠΎ ΠΊΠ°ΠΊΠΈΠ΅ дСйствия нСдопустимы с указатСлями

Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка: Β«px undeclaredΒ». Π’.Π΅. ΠΊΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ px Π½Π΅ объявлСн. А Ρ‡Ρ‚ΠΎΠ±Ρ‹ всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ ΠΌΡ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, c ΠΎΠ΄Π½ΠΎΠΉ стороны, объявляСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ AddFive, Π° с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, записываСм Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ адрСс a. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, нСпонятно ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π’Ρ‹ считаСтС, Ρ‡Ρ‚ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚Π°ΠΌ Π½Π΅ создаётся. Π’Π΅Π΄ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π΄Π΅Π»ΠΈΠ»Π°ΡΡŒ, Ρ‚Π°ΠΊ? И ΠΊΠ°ΠΊ Ρ€Π°Π·, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ создали ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΏΡƒΡΡ‚ΡŒ ΠΈ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠžΡ‚Π²Π΅Ρ‚

На этапС компиляции ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ компилятор Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ создаСт, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ провСряСт соотвСтствиС Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€ΠΈ Π΅Π΅ Π²Ρ‹Π·ΠΎΠ²Π΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² описании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ пСрСдаСтся адрСс β€” это пСрвая ошибка Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅. Вторая ошибка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ px, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ объявлСна, поэтому компилятор ΠΏΠΈΡˆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Β«px undeclaredΒ», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ «пСрСмСнная px Π½Π΅ объявлСна».

Когда ошибки Π±ΡƒΠ΄ΡƒΡ‚ устранСны ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° AddFive(&a) ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ для указатСля ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π½Π΅ создаСтся, Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ стСк для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *

Ѐункция- Ρ‡Π»Π΅Π½ классаДруТСствСнная функция