Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…: Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… указатСля Π² C++

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

c++ — Π—Π°Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ хранится ΠΏΠΎ адрСсу?

Вопрос Π·Π°Π΄Π°Π½

Π˜Π·ΠΌΠ΅Π½Ρ‘Π½ 4 Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ 324 Ρ€Π°Π·Π°

БобствСнно, Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ пишСм Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ объявлСниСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля? Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ хранят адрСс ячСйки, Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌ Π΄Π΅Π»ΠΎ, Ρ‡Ρ‚ΠΎ Π»Π΅ΠΆΠΈΡ‚ ΠΏΠΎ этому адрСсу?

  • c++
  • ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

14

БобствСнно Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ пишСм Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля?

БобствСнно Π·Π° Ρ‚Π΅ΠΌ ΠΆΠ΅, Π·Π°Ρ‡Π΅ΠΌ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Когда ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ врСмя Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·ΡŠΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ), Ρ‚ΠΎ транслятору Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ это Ρ‚ΠΈΠΏ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ этому Ρ‚ΠΈΠΏΡƒ.

Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ хранят адрСс ячСйки Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠΌ Π΄Π΅Π»ΠΎ Ρ‡Ρ‚ΠΎ Π»Π΅ΠΆΠΈΡ‚ ΠΏΠΎ этому адрСсу?

Пока ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ просто хранят адрСс ΠΈΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ транслятору) всС Ρ€Π°Π²Π½ΠΎ. Но ΠΊΠΎΠ³Π΄Π° начинаСтся использованиС Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ этому адрСсу, Ρ‚ΠΎ транслятору Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ этих Π΄Π°Π½Π½Ρ‹Ρ….

UPD1:

НуТно ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ (ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ) ΠΊΠΎΠ³Π΄Π° ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… (int) числа, Ρ‚ΠΎ транслятор Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. А ΠΊΠΎΠ³Π΄Π° ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° float числа, Ρ‚ΠΎ транслятор Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ совсСм Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π°ΠΆΠ½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ информация ΠΎΠ± опСрациях Π½Π°Π΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, Π½ΠΎ ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½Π° информация ΠΎΠ± Ρ‚ΠΈΠΏΠ°Ρ… этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

2

Π‘ΠΊΠΎΡ€Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор Π·Π½Π°Π» с ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚,ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π§Ρ‚ΠΎΠ± ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π½ΠΈΠΈ указатСля Π·Π½Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΠ½ ссылаСтся — Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ°(Π±Π°ΠΉΡ‚Ρ‹). Всё Ρ‚Π°ΠΊΠΈ C++ — статичСски Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык программирования.

БчитаСтся, Ρ‡Ρ‚ΠΎ указатСлями слоТно ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½Π° часто нСвСрная инициализация ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкам, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ. Если компилятор Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ хранится ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ.

Π’Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ указатСля, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Если Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ указатСля, Ρ‚ΠΎ всСгда ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пустой Ρ‚ΠΈΠΏ void.

Если ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ — это ΡƒΠ»ΠΈΡ†Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ — это собствСнно Π½ΠΎΠΌΠ΅Ρ€ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρ‹, Ρ‚ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Ρ‚ Ρ‚ΠΈΠΏ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ Π² состоянии Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ²Π°Ρ€Ρ‚ΠΈΡ€Ρƒ Π±Π΅Π· адрСса, + ΠΊΠΎ всСму Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ сильно влияСт Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля.

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅

РСгистрация Ρ‡Π΅Ρ€Π΅Π· Google

РСгистрация Ρ‡Π΅Ρ€Π΅Π· Facebook

РСгистрация Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡ‡Ρ‚Ρƒ

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π΅Π· рСгистрации

ΠŸΠΎΡ‡Ρ‚Π°

НСобходима, Π½ΠΎ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ показываСтся

ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π±Π΅Π· рСгистрации

ΠŸΠΎΡ‡Ρ‚Π°

НСобходима, Π½ΠΎ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ показываСтся

НаТимая Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚Β», Π²Ρ‹ ΡΠΎΠ³Π»Π°ΡˆΠ°Π΅Ρ‚Π΅ΡΡŒ с нашими ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ соглашСниСм, ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ ΠΎ ΠΊΡƒΠΊΠΈ

1.

2.4. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ | Π­Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ° для всСх

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ части 1.2.3 Числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ β€” это адрСс памяти, распрСдСляСмой для размСщСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° (Π² качСствС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, массива, структуры, строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°). Π’ Ρ‚ΠΎΠΌ случаС, Ссли пСрСмСнная объявлСна ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎ ΠΎΠ½Π° содСрТит адрСс памяти, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ находится скалярная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° любого Ρ‚ΠΈΠΏΠ°. ΠŸΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΄Π°Π½Π½Ρ‹Ρ…, адрСс ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ пСрСмСнная, ΠΈ имя указатСля с ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ (ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ Π·Π²Π΅Π·Π΄ΠΎΡ‡Π΅ΠΊ). Π€ΠΎΡ€ΠΌΠ°Ρ‚ объявлСния указатСля:

спСцификатор-Ρ‚ΠΈΠΏΠ° [ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ] * ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ .

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€-Ρ‚ΠΈΠΏΠ° Π·Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любого основного Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΈΠΏΠ° структуры, смСси (ΠΎΠ± этом Π±ΡƒΠ΄Π΅Ρ‚ сказано Π½ΠΈΠΆΠ΅). Задавая вмСсто спСцификатора-Ρ‚ΠΈΠΏΠ° ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово void, ΠΌΠΎΠΆΠ½ΠΎ своСобразным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚ΡΡ€ΠΎΡ‡ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявляСмая ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ void, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ любого Ρ‚ΠΈΠΏΠ°.

Однако для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ арифмСтичСскиС ΠΈ логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ указатСлями ΠΈΠ»ΠΈ Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ привСдСния Ρ‚ΠΈΠΏΠΎΠ².

Π’ качСствС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΈ объявлСнии указатСля ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова const, near, far, huge. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово const ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ объявлСнной ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, зависит ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ.

Для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° указатСля ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова near, far, huge.

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

   unsigned int * a; /* пСрСмСнная  Π°  прСдставляСт собой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ
                     Π½Π° Ρ‚ΠΈΠΏ unsigned int (Ρ†Π΅Π»Ρ‹Π΅ числа Π±Π΅Π· Π·Π½Π°ΠΊΠ°) */

   double * x;       /* пСрСмСнная  Ρ…  ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚  Π½Π°  Ρ‚ΠΈΠΏ  Π΄Π°Π½Π½Ρ‹Ρ… с
                     ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ  Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ  ΡƒΠ΄Π²ΠΎΠ΅Π½Π½ΠΎΠΉ  точности      */

   char * fuffer ;   /*  ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ  ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ fuffer
                      ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°  ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° char */

   double nomer;
   void *addres;
   addres = & nomer;
   (double *)addres ++;

  /* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ addres объявлСна ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ любого Ρ‚ΠΈΠΏΠ°.  
 ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ адрСс любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° (& - опСрация  вычислСния 
 адрСса). Однако, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ΠΎ Π²Ρ‹ΡˆΠ΅, Π½ΠΈ ΠΎΠ΄Π½Π° арифмитичСская опСрация Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚
  Π±Ρ‹Ρ‚ΡŒ  Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π°Π΄ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ,  ΠΏΠΎΠΊΠ°   Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ явно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…,  
 Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. Π­Ρ‚ΠΎ   ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ,  ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ привСдСния Ρ‚ΠΈΠΏΠ°
  (double *) для   прСобразования addres ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° Ρ‚ΠΈΠΏ double, Π° Π·Π°Ρ‚Π΅ΠΌ  ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ адрСса. */

    const * dr;

  /* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ  dr  объявлСна ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° константноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Ρ‚.Π΅. Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 
 указатСля ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² процСссС   выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ
 ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π½Π΅Ρ‚. */

    unsigned char * const w = &obj.

  /* ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ w объявлСна ΠΊΠ°ΠΊ константный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° char unsigned. 
  Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° протяТСниС всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹  w  Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ 
 ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти.  Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΠΆΠ΅   этой области ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.
*/

Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π»Π΅Π΅. Π Π°Π·Π΄Π΅Π» 1.2.5 ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ
Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Какой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Ρƒ указатСля Π² c?

спросил

ИзмСнСно 1 Π³ΠΎΠ΄, 6 мСсяцСв Π½Π°Π·Π°Π΄

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ 40 тысяч Ρ€Π°Π·

ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями цСлочислСнного ΠΈΠ»ΠΈ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…?

  • c
  • ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

2

НСт. Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит ΠΎΡ‚ систСмы ΠΈ СдинствСнный совмСстимый Ρ‚ΠΈΠΏ β€” void* .

8

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ относятся ΠΊ Ρ‚ΠΈΠΏΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Если Π²Ρ‹ ΡΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ значСния указатСля прСдставлСны Π² памяти, это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ зависит ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ простыС цСлочислСнныС значСния (ΠΊΠ°ΠΊ Π² плоской ΠΌΠΎΠ΄Π΅Π»ΠΈ памяти), ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ структурированными значСниями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π½ΠΎΠΌΠ΅Ρ€ страницы ΠΈ смСщСниС (для сСгмСнтированной ΠΌΠΎΠ΄Π΅Π»ΠΈ), ΠΈΠ»ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π’ C ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн с Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ адрСс указатСля Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ %p , Π° для ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ адрСса Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ %u . Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для отобраТСния значСния ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ *pointer_name ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для адрСса ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ pointer_name .

Π― ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ сами ΠΏΠΎ сСбС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠ΅ ΡƒΠ±Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ, написанной Π‘Ρ€Π°ΠΉΠ°Π½ΠΎΠΌ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½ΠΎΠΌ ΠΈ ДСннисом Π ΠΈΡ‚Ρ‡ΠΈ, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ· Π²Π²ΠΎΠ΄Π½ΠΎΠΉ части, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ говорится, Ρ‡Ρ‚ΠΎ —

BCPL ΠΈ B ΡΠ²Π»ΡΡŽΡ‚ΡΡ «Π±Π΅ΡΡ‚ΠΈΠΏΠΎΠ²Ρ‹ΠΌΠΈ» языками. Напротив, C прСдоставляСт мноТСство Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ символы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ†Π΅Π»Ρ‹Π΅ числа ΠΈ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ². ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствуСт иСрархия ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, созданных с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, массивов, структур ΠΈ объСдинСний.

ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, обсудитС ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ своим ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ.

Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ ΠΏΠΎ языку программирования c ДСнниса Π ΠΈΡ‡ΠΈ

int *p;

Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… *p являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. И ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ цСлочислСнного Ρ‚ΠΈΠΏΠ°. Он Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

1

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° любой Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ char/int/float/double/…, ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами Π±Π΅Π· Π·Π½Π°ΠΊΠ°.

ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° : ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ячСйкой Π² ​​памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΎΠ½ всСгда ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

2

Каков Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… указатСля Π² C? это ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ вопрос.

НС слСдуСт ΠΎΡ‚ΠΊΠ»ΠΎΠ½ΡΡ‚ΡŒΡΡ ΠΎΡ‚ вопроса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ пояснСния ΠΏΠΎ указатСлям Π² качСствС ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° вопрос?

ΠžΡ‚Π²Π΅Ρ‚.

  1. Как называСтся Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π° Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² C? Имя β€” int β€” это имя Π½Π°Π±ΠΎΡ€Π°, состоящСго ΠΈΠ· всСх допустимых Ρ†Π΅Π»Ρ‹Ρ… чисСл. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ объявляСм int x; Π³Π΄Π΅ x ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ любоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· мноТСства.

  2. Аналогично, ΠΊΠ°ΠΊ называСтся Π½Π°Π±ΠΎΡ€ всСх допустимых адрСсов ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ? .Имя Π½Π°Π±ΠΎΡ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ символом ‘*’, ΠΊΠ°ΠΊ я понимаю, хотя Π½ΠΈΠ³Π΄Π΅ Π² повСствованиях Π½Π° языкС C Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… объяснСний.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΌΡ‹ объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ°ΠΊ *x; Π³Π΄Π΅ * β€” имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС, Π·Π°Ρ‡Π΅ΠΌ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… указатСля ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, опрСдСляСмый ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ всС ячСйки ΠžΠ—Π£, Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ‘*’ ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ подмноТСство допустимых ΠΈ доступных ячССк памяти. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, это имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

int β€” это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠ°ΠΊ Π² signed char c; Π³Π΄Π΅ signed — это ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π² C. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρƒ нас ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ int *x; ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π² располоТСнии ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Ρ†Π΅Π»ΠΎΠ΅ число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ для компилятора.

C Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… указатСля ΠΊΠ°ΠΊ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ Ρ‚ΠΈΠΏΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… указатСля ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ контроля Π½Π°Π΄ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Π½Π°Π±ΠΎΡ€Π΅, исходя ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ: int β€” это имя Π½Π°Π±ΠΎΡ€Π°, float β€” это имя Π½Π°Π±ΠΎΡ€Π°, char β€” это имя. имя Π½Π°Π±ΠΎΡ€Π° символов, double β€” это имя Π½Π°Π±ΠΎΡ€Π° чисСл высокой точности с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, color β€” имя Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… Π² пСрСчислСнии color = { blue, red, yellow).

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠ»ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π² систСму

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Google

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· Facebook

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Π½Π΅ отобраТаСтся

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π³ΠΎΡΡ‚ΡŒ

ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°

ВрСбуСтся, Π½ΠΎ Π½Π΅ отобраТаСтся

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Pointer β€” Руководство FreeBASIC Wiki


Автор: rdc

Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… pointer ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ срСди числовых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… FreeBASIC. ВмСсто Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ числовыС Ρ‚ΠΈΠΏΡ‹, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ содСрТит адрСс памяти Π΄Π°Π½Π½Ρ‹Ρ….

Π’ 32-разрядной систСмС Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… указатСля составляСт 4 Π±Π°ΠΉΡ‚Π° (8 Π±Π°ΠΉΡ‚ΠΎΠ² Π² 64-разрядной систСмС). FreeBASIC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для ряда Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ImageCreate, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Windows API. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ довольно быстры, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ячСйкС памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для эффСктивного программирования Π½Π° FreeBASIC.

Многим Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ каТутся странным ΠΈ Π·Π°Π³Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌ Π·Π²Π΅Ρ€Π΅ΠΌ. Однако, Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅, Ρƒ вас Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с использованиСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΡ‡Π΅Π½ΡŒ простоС: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ содСрТит адрСс, Π° Π½Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Если Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΎΠ± этом простом ΠΏΡ€Π°Π²ΠΈΠ»Π΅, Ρƒ вас Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с использованиСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ памяти Π² вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΊΠ°ΠΊ ΠΎ Π½Π°Π±ΠΎΡ€Π΅ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹Ρ… ящиков (P. O. Box) Π² вашСм мСстном ΠΏΠΎΡ‡Ρ‚ΠΎΠ²ΠΎΠΌ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΈ. Когда Π²Ρ‹ ΠΈΠ΄Π΅Ρ‚Π΅ Π°Ρ€Π΅Π½Π΄ΠΎΠ²Π°Ρ‚ΡŒ P.O. Box, слуТащий даст Π²Π°ΠΌ Π½ΠΎΠΌΠ΅Ρ€, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 100. Π­Ρ‚ΠΎ адрСс вашСго P.O. ΠšΠΎΡ€ΠΎΠ±ΠΊΠ°. Π’Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ Π½Π° листкС Π±ΡƒΠΌΠ°Π³ΠΈ ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π±ΡƒΠΌΠ°ΠΆΠ½ΠΈΠΊ. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ дСнь Π²Ρ‹ ΠΈΠ΄Π΅Ρ‚Π΅ Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈ достаСтС Π±ΡƒΠΌΠ°ΠΆΠΊΡƒ. Π’Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ящик 100, заглядываСтС Π²Π½ΡƒΡ‚Ρ€ΡŒ ΠΈ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΊΡƒΡ‡Ρƒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΡ‡Ρ‚Ρ‹. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ, Π½ΠΎ ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ Π½Π΅Ρ‚ ΠΊΠΎΡ€Π·ΠΈΠ½Ρ‹ для мусора, поэтому Π²Ρ‹ Ρ€Π΅ΡˆΠ°Π΅Ρ‚Π΅ просто ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ящик ΠΈ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Π΅Π΅ ΠΏΠΎΠ·ΠΆΠ΅. Π Π°Π±ΠΎΡ‚Π° с указатСлями Π² FreeBASIC ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° использованиС P.O. ΠšΠΎΡ€ΠΎΠ±ΠΊΠ°.

Когда Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΎΠ½ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ чистому листу Π±ΡƒΠΌΠ°Π³ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ адрСсу памяти, Ρ‡Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ записи числа 100 Π½Π° листкС Π±ΡƒΠΌΠ°Π³ΠΈ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² адрСс, Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик. Box, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ мСста Π² памяти. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, использованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных шагов.

  1. ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.
  2. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° адрСс памяти.
  3. Π Π°Π·Ρ‹ΠΌΠ΅Π½ΡƒΠΉΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ячСйкС памяти.

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

Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

FreeBASIC ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ: Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅. Π’ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

Dim myPointer As Integer Ptr

Π­Ρ‚ΠΎ сообщаСт компилятору, Ρ‡Ρ‚ΠΎ этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для цСлочислСнных Π΄Π°Π½Π½Ρ‹Ρ…. ИспользованиС Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ позволяСт компилятору Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΈΠΏΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ указатСля.

НСтипизированныС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Any.

Dim myPointer As Any Ptr

НСтипизированныС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² Π±Π°ΠΉΡ‚Π°Ρ…. НСтипизированныС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния C ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Win32 API, для размСщСния указатСля Ρ‚ΠΈΠΏΠ° void Π² C. Если Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ компилятор ΠΌΠΎΠ³ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ назначСния указатСля.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

FreeBASIC ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ addressof Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ адрСс памяти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ адрСс ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ адрСс ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для создания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CRT QSort.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ памяти

FreeBASIC Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ с указатСлями.

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ для создания ряда динамичСских структур, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ связанныС списки, Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ ΠΈΠ»ΠΈ динамичСскиС массивы ΠΈ Π±ΡƒΡ„Π΅Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ со сторонними Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ.

ΠŸΡ€ΠΈ использовании Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Allocate Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π° основС Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ число_элСмСнтов * Π Π°Π·ΠΌΠ΅Ρ€ (Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…). Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ мСсто для 10 Ρ†Π΅Π»Ρ‹Ρ… чисСл, ваш ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: myPointer = Allocate(10 * Sizeof(Integer)). Π¦Π΅Π»ΠΎΠ΅ число составляСт 4/8 Π±Π°ΠΉΡ‚ΠΎΠ² (Π² 32/64-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмах), поэтому Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ 10 Ρ†Π΅Π»Ρ‹Ρ… чисСл Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ 40/80 Π±Π°ΠΉΡ‚ΠΎΠ² памяти (Π² 32/64-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмах). Allocate Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ сСгмСнт памяти, поэтому Π»ΡŽΠ±Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² сСгмСнтС Π±ΡƒΠ΄ΡƒΡ‚ случайными, бСссмыслСнными Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½.

Callocate Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ вычислСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ 10 Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Callocate, ваш ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ: myPointer = Callocate(10, Sizeof(Integer)). Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Allocate, Callocate очистит сСгмСнт памяти.

ΠŸΠ΅Ρ€Π΅Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сСгмСнта памяти, сдСлав Π΅Π³ΠΎ большС ΠΈΠ»ΠΈ мСньшС ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости. Если Π½ΠΎΠ²Ρ‹ΠΉ сСгмСнт большС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сСгмСнта, Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ сСгмСнтС Π±ΡƒΠ΄ΡƒΡ‚ сохранСны. Если Π½ΠΎΠ²Ρ‹ΠΉ сСгмСнт мСньшС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ сСгмСнта, Π΄Π°Π½Π½Ρ‹Π΅ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ сСгмСнтС Π±ΡƒΠ΄ΡƒΡ‚ усСчСны. ΠŸΠ΅Ρ€Π΅Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π½Π΅ измСняСт ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

ВсС эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ адрСс памяти Π² случаС успСха. Если Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ сСгмСнт памяти, возвращаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ NULL (0). Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ сСгмСнт памяти Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ создан. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ повСдСнию ΠΈΠ»ΠΈ сбою систСмы.

НС сущСствуСт собствСнного ΠΌΠ΅Ρ‚ΠΎΠ΄Π° опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° распрСдСлСния. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.
Π‘ΡƒΠ΄ΡŒΡ‚Π΅ остороТны, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для выдСлСния Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ сСгмСнтов памяти. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС указатСля Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ освобоТдСния сСгмСнта, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ сСгмСнта памяти, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΡƒΡ‚Π΅Ρ‡ΠΊΠ΅ памяти.
АрифмСтика указатСля ΠΈ индСксация указатСля

Когда Π²Ρ‹ создаСтС сСгмСнт памяти с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ распрСдСлСния, Π²Π°ΠΌ понадобится способ доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, содСрТащимся Π² сСгмСнтС. Π’ FreeBASIC Π΅ΡΡ‚ΡŒ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° доступа ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² сСгмСнтС; ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ косвСнности с Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΎΠΉ указатСля ΠΈ индСксациСй указатСля.

АрифмСтика указатСля, ΠΊΠ°ΠΊ слСдуСт ΠΈΠ· названия, складываСт ΠΈ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ значСния указатСля для доступа ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ элСмСнтам Π² сСгмСнтС памяти. Когда Π²Ρ‹ создаСтС Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Dim myPointer as Integer ptr, компилятор Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ с этим ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Integer ΠΈΠ»ΠΈ 4 Π±Π°ΠΉΡ‚Π°. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт сСгмСнта. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ это ΠΊΠ°ΠΊ *(myPtr + 0). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ элСмСнту, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΎ ΠΊΠ°ΠΊ *(myPtr + 1).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ число, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ 1 ΠΊ ссылкС указатСля фактичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ адрСс, содСрТащийся Π² myPtr, Π½Π° 4/8 (Π² 32/64-Π±ΠΈΡ‚Π½Ρ‹Ρ… систСмах), Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ использованиС Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΄Π΅Π»Π°Π΅Ρ‚ Π·Π° вас Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ доступу ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ Π² сСгмСнтС памяти.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ это конструкция *(myPtr + 1), Π° Π½Π΅ *myPtr + 1. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚, Ρ‡Π΅ΠΌ +, поэтому *myPtr + 1 фактичСски ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ содСрТимоС, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ myPtr, Π° Π½Π΅ адрСс указатСля.

  • Π‘Π½Π°Ρ‡Π°Π»Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ myPtr, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ содСрТимоС ячСйки памяти, Π° Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ +1, добавляя 1 ΠΊ ячСйкС памяти. Π—Π°ΠΊΠ»ΡŽΡ‡Π°Ρ myPtr + 1 Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки, Π²Ρ‹ заставляСтС компилятор сначала ΠΎΡ†Π΅Π½ΠΈΠ²Π°Ρ‚ΡŒ myPtr + 1, Ρ‡Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ адрСс указатСля, Π° Π·Π°Ρ‚Π΅ΠΌ примСняСтся * для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° содСрТимого Π½ΠΎΠ²ΠΎΠ³ΠΎ адрСса.

Π˜Π½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡ указатСля Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ° указатСля, Π½ΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ компилятором. *(myPtr + 1) эквивалСнтно myPtr[1]. ΠžΠΏΡΡ‚ΡŒ ΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ myPtr являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Ρ†Π΅Π»ΠΎΠ΅ число, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ смСщСния памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ значСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ индСкс. Какой Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, зависит ΠΎΡ‚ вас, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ индСкса Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ доступа ΠΊ массиву ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ Π΅Π³ΠΎ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ косвСнности.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ указатСля

Freebasic ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ указатСля, Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ указатСля.

  • Cptr ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ data_type. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ Ρ†Π΅Π»Ρ‹ΠΌ числом.
  • Peek Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ содСрТимоС области памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Data_type ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….
  • Poke ΠŸΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π² ячСйку памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. data_type ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π² ячСйку памяти.
  • Sadd Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ мСсто Π² памяти, Π³Π΄Π΅ находятся строковыС Π΄Π°Π½Π½Ρ‹Π΅ Π² динамичСской строкС.
  • Strptr Π’ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ Sadd.
  • Procptr Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ адрСс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ адрСс ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° @.
  • Varptr Π­Ρ‚Π° функция Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ адрСс ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° @.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sadd ΠΈ Strptr Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ со строковыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, возвращая адрСс строковых Π΄Π°Π½Π½Ρ‹Ρ…. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Peek ΠΈ Poke Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. Procptr ΠΈ Varptr Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ адрСс ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° @, Π½ΠΎ Proptr Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ ΠΈ функциями, Π° Varptr Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Cptr ΠΏΠΎΠ»Π΅Π·Π΅Π½ для прСобразования Π½Π΅Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ указатСля Π² Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· стороннСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, находятся Π² памяти ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ адрСс, связанный с ΠΈΡ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ Π²Ρ…ΠΎΠ΄Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти адрСса для создания событий Π² своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, для создания ΠΏΡΠ΅Π²Π΄ΠΎΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π² функциях ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Π’Ρ‹ создаСтС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ свою ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ΅Ρ€Π΅Π΄ использованиСм указатСля Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ адрСсом ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Procptr ΠΈΠ»ΠΈ @. ПослС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ исходной ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. 9pwr
End Function

FuncPtr = @Power

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π»ΠΈ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

FuncPtr(2, 4)

Π₯отя Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ бСсполСзным, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π³Π΄Π΅ ΠΎΠ΄ΠΈΠ½ экзСмпляр ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

НапримСр, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ собака ΠΈ кошка. Оба ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Speak. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ² Speak ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ связав Speak с ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Bark для собаки ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Meow для кошки, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Speak Π²Ρ‹Π΄Π°Π²Π°Π» «Π“Π°Π²!» ΠΈΠ»ΠΈ «ΠœΡΡƒ!» Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°

Одним ΠΈΠ· основных ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ являСтся созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°. Ѐункция ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° β€” это функция, созданная Π²Π°ΠΌΠΈ Π² вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, которая вызываСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ Π»ΠΈΠ±ΠΎ Π² вашСм собствСнном ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΌ пространствС, Π»ΠΈΠ±ΠΎ Π²ΠΎ внСшнСй Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅. Windows ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° для пСрСчислСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Window, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹, ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹.

Ѐункция qsort, содСрТащаяся Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния C, сортируСт элСмСнты массива, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° для опрСдСлСния порядка сортировки. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ qsort содСрТится Π² crt/stdlib.bi:

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ qsort (ByVal As Any Ptr, ByVal As size_t, ByVal As size_t, ByVal As Function(ByVal As Any Ptr, ByVal As Any Ptr) As Long)

НиТС пСрСчислСны ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ qsort.

  1. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — это адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива. Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² qsort β€” Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ адрСс ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊ индСксу ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта: @myArray(0).
  2. Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — это количСство элСмСнтов Π² массивС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ счСтчик массива.
  3. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€” Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π² Π±Π°ΠΉΡ‚Π°Ρ…. Для массива Ρ†Π΅Π»Ρ‹Ρ… чисСл Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ 4 Π±Π°ΠΉΡ‚Π°.
  4. Π§Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сравнСния. Ѐункция Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна ​​с использованиСм ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Cdecl, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² этом ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ qsort. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта вмСстС с количСством элСмСнтов ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта, qsort ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ массиву, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Qsort Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚ Π΄Π²Π° элСмСнта массива, пСрСдаст ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сравнСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ сравнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для сортировки элСмСнтов массива. Π­Ρ‚ΠΎ повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ отсортирован.

НСобходимо ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ Cdecl, Ρ‡Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС.

ΠžΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ QCompare CDecl (ByVal e1 As Any Ptr, ByVal e2 As Any Ptr) As Long

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

‘Ѐункция qsort ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ числа
‘ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сравнСния:
‘-1: Ссли e1 мСньшС e2
‘0: Ссли e1 Ρ€Π°Π²Π½ΠΎ e2
‘1: Ссли e1 большС e2
Ѐункция QCompare CDecl (ByVal e1 As Any Ptr, ByVal e2 As Any Ptr) As Long
Β  Β  Dim As Integer el1, el2
Β  Β  Static cnt As Integer

Β  Β  ‘ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ количСство Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ элСмСнты
Β  Β  cnt += 1
Β  , must ‘ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ значСния ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ†Π΅Π»ΠΎΠ΅ число ptr
Β  Β  el1 = *(CPtr(Integer Ptr, e1))
Β  Β  el2 = *(CPtr(Integer Ptr, e2))
Β  Β  Print «Π’Ρ‹Π·Π²Π°Π½Π° Qsort»;cnt;» врСмя(с) с»;el1;» ΠΈ»;el2;». »
‘Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ значСния
, Ссли EL1 return -1
elseif el1> el2, Π·Π°Ρ‚Π΅ΠΌ
Π’ΠΎΠ·Π²Ρ€Π°Ρ‚ 1
els функция.

#include «crt/stdlib.bi»

qsort @myArray(0), 10, SizeOf(Integer), @QCompare

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

Π’ FreeBASIC Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° любой ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Π² ситуациях, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ создании спСциализированных структур Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ связанныС списки ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹Π΅ массивы. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ называСтся ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ.

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

Dim myMemArray As Integer Ptr Ptr

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку указатСля, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Allocate ΠΈΠ»ΠΈ Callocate.

‘Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ 10 строк цСлочислСнных ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ
myMemArray = CAllocate(10, SizeOf(Integer Ptr))

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ пСрСмСнная ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Integer Ptr , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ этот список Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ список; это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданныС ссылки Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ сСгмСнты памяти.

‘Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 10 столбцов Ρ†Π΅Π»Ρ‹Ρ… чисСл Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ строку
For i As Integer = 0 To 9
Β  Β  myMemArray[i] = CAllocate(10, SizeOf(Integer))
Next

Π’ этом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² спискС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ 10 сСгмСнтами памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ фактичСскиС цСлочислСнныС Π΄Π°Π½Π½Ρ‹Π΅.

‘Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² сСгмСнт памяти
For i As Integer = ΠΎΡ‚ 0 Π΄ΠΎ 9
Β  Β  For j As Integer = ΠΎΡ‚ 0 Π΄ΠΎ 9
Β  Β  Β  Β  myMemArray[i][j] = Int(Rnd * 10)
Β  Β  Next
Next

Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ index для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ фактичСских Π΄Π°Π½Π½Ρ‹Ρ… Π² сСгмСнты памяти.

ΠžΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

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

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