На ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ: Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² C++ | Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ Π‘++

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

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² C++ | Π£Ρ€ΠΎΠΊΠΈ ΠΏΠΎ Π‘++

  Обновл. 17 Июл 2021  | 

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΒ β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π»ΠΈ: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит адрСс Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ указатСля.

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

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° int ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с использованиСм ΠΎΠ΄Π½ΠΎΠΉ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ:

int *ptr; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° int, ΠΎΠ΄Π½Π° Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ°

int *ptr; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° int, ΠΎΠ΄Π½Π° Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ°

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° int ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с использованиСм Π΄Π²ΡƒΡ… Π·Π²Ρ‘Π·Π΄ΠΎΡ‡Π΅ΠΊ:

int **ptrptr; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° int (Π΄Π²Π΅ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ)

int **ptrptr; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° int (Π΄Π²Π΅ Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ)

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

#include <iostream>

int main()
{
int value = 7;

int *ptr = &value;
std::cout << *ptr << std::endl; // Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int

int **ptrptr = &ptr;
std::cout << **ptrptr << std::endl;

return 0;
}

#include <iostream>

Β 

int main()

{

int value = 7;

Β 

int *ptr = &value;

std::cout << *ptr << std::endl; // Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int

Β 

int **ptrptr = &ptr;

std::cout << **ptrptr << std::endl;

Β 

return 0;

}

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

7
7

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ:

int value = 7;
int **ptrptr = &&value; // нСльзя

int value = 7;

int **ptrptr = &&value; // нСльзя

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса (&) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ l-value, Π½ΠΎ &value β€” это r-value. Однако ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null:

int **ptrptr = nullptr; // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ 0, Ссли Π½Π΅ поддСрТиваСтся C++11

int **ptrptr = nullptr; // ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ 0, Ссли Π½Π΅ поддСрТиваСтся C++11

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. НаиболСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ являСтся динамичСскоС выдСлСниС массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

int **array = new int*[20]; // выдСляСм массив ΠΈΠ· 20 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int

int **array = new int*[20]; // выдСляСм массив ΠΈΠ· 20 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int

Π­Ρ‚ΠΎ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ динамичСски Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ массив, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ элСмСнтами ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Ρ‚ΠΈΠΏ int, Π° Π½Π΅ значСния Ρ‚ΠΈΠΏΠ° int.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ динамичСски Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ массивы

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

ДинамичСскоС Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся. Π£ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ соблазн Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

int **array = new int[15][7]; // Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ!

int **array = new int[15][7]; // Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ!

Π—Π΄Π΅ΡΡŒ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π•ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Если ΠΏΡ€Π°Π²Ρ‹ΠΉ индСкс являСтся константой Ρ‚ΠΈΠΏΠ° compile-time, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

int (*array)[7] = new int[15][7];

int (*array)[7] = new int[15][7];

Π‘ΠΊΠΎΠ±ΠΊΠΈ здСсь ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для соблюдСния ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. Π’ C++11 Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΈΠ΄Π΅Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово auto для автоматичСского опрСдСлСния Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…:

auto array = new int[15][7]; // Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅!

auto array = new int[15][7]; // Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅!

К соТалСнию, это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли ΠΏΡ€Π°Π²Ρ‹ΠΉ индСкс Π½Π΅ являСтся константой Ρ‚ΠΈΠΏΠ° compile-time. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС всё Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ услоТняСтся. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ выдСляСм массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ (ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅), Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ выдСляСм динамичСский массив для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта этого массива. Π˜Ρ‚ΠΎΠ³ΠΎ, наш динамичСский Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив β€” это динамичСский ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив динамичСских ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов!

int **array = new int*[15]; // выдСляСм массив ΠΈΠ· 15 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int β€” это наши строки
for (int count = 0; count < 15; ++count)
array[count] = new int[7]; // Π° это наши столбцы

int **array = new int*[15]; // выдСляСм массив ΠΈΠ· 15 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int β€” это наши строки

for (int count = 0; count < 15; ++count)

Β Β Β Β array[count] = new int[7]; // Π° это наши столбцы

Доступ ΠΊ элСмСнтам массива выполняСтся ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ:

array[8][3] = 4; // это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ (array[8])[3] = 4;

array[8][3] = 4; // это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ (array[8])[3] = 4;

Π­Ρ‚ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ столбСц массива динамичСски выдСляСтся нСзависимо, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ динамичСски Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹:

int **array = new int*[15]; // выдСляСм массив ΠΈΠ· 15 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int β€” это наши строки
for (int count = 0; count < 15; ++count)
array[count] = new int[count+1]; // Π° это наши столбцы

int **array = new int*[15]; // выдСляСм массив ΠΈΠ· 15 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int β€” это наши строки

for (int count = 0; count < 15; ++count)

Β Β Β Β array[count] = new int[count+1]; // Π° это наши столбцы

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅, array[0] β€” это массив Π΄Π»ΠΈΠ½ΠΎΠΉ 1, Π° array[1] β€” массив Π΄Π»ΠΈΠ½ΠΎΠΉ 2 ΠΈ Ρ‚.Π΄.

Для освобоТдСния памяти динамичСски Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создавался с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого способа) Ρ‚Π°ΠΊΠΆΠ΅ потрСбуСтся Ρ†ΠΈΠΊΠ»:

for (int count = 0; count < 15; ++count)
delete[] array[count];
delete[] array; // это слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅

for (int count = 0; count < 15; ++count)

Β Β Β Β delete[] array[count];

delete[] array; // это слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ†Π΅

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΌΡ‹ удаляСм массив Π² порядкС, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ Π΅Π³ΠΎ созданию. Если ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ массив ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ элСмСнтов массива, Ρ‚ΠΎ Π½Π°ΠΌ придСтся ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ освобоТдСнной памяти для удалСния элСмСнтов массива. А это, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ процСсс выдСлСния ΠΈ освобоТдСния Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов являСтся нСсколько Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ (ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π½Π°Π΄Π΅Π»Π°Ρ‚ΡŒ ошибок), Ρ‚ΠΎ часто ΠΏΡ€ΠΎΡ‰Π΅ Β«ΡΠΏΠ»ΡŽΡ‰ΠΈΡ‚ΡŒΒ» Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив:

// ВмСсто ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:
int **array = new int*[15]; // выдСляСм массив ΠΈΠ· 15 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int β€” это наши строки
for (int count = 0; count < 15; ++count)
array[count] = new int[7]; // Π° это наши столбцы

// Π”Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:
int *array = new int[105]; // Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив 15×7 «ΡΠΏΠ»ΡŽΡ‰Π΅Π½Π½Ρ‹ΠΉ» Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

// ВмСсто ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ:

int **array = new int*[15]; // выдСляСм массив ΠΈΠ· 15 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚ΠΈΠΏΠ° int β€” это наши строки

for (int count = 0; count < 15; ++count)

Β Β Β Β array[count] = new int[7]; // Π° это наши столбцы

// Π”Π΅Π»Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

int *array = new int[105]; // Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив 15×7 «ΡΠΏΠ»ΡŽΡ‰Π΅Π½Π½Ρ‹ΠΉ» Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ индСксов строки ΠΈ столбца ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² ΠΎΠ΄ΠΈΠ½ индСкс ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива:

int getSingleIndex(int row, int col, int numberOfColumnsInArray)
{
return (row * numberOfColumnsInArray) + col;
}

// ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ array[9,4] Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ наш «ΡΠΏΠ»ΡŽΡ‰Π΅Π½Π½Ρ‹ΠΉ» массив
array[getSingleIndex(9, 4, 5)] = 3;

int getSingleIndex(int row, int col, int numberOfColumnsInArray)

{

Β Β Β Β  return (row * numberOfColumnsInArray) + col;

}

// ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ array[9,4] Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ наш «ΡΠΏΠ»ΡŽΡ‰Π΅Π½Π½Ρ‹ΠΉ» массив

array[getSingleIndex(9, 4, 5)] = 3;

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

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ:

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

Или ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, Ссли Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Однако Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

ΠžΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ:

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°…

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π² ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сСтях:

ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ — Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ — Ρ‡Ρ‚ΠΎ это?

Ни Π² языкС Π‘++, Π½ΠΈ Π² языкС Π‘, Π½Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ понятия, ΠΊΠ°ΠΊ «ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ» Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ сущности с ΠΊΠ°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΌΠΈ качСствСнными свойствами. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² строгом смыслС слова, вопрос ΠΎ Ρ‚ΠΎΠΌ «Π·Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ» Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла.

Π’ языках Π‘ ΠΈ Π‘++ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ понятиС, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π’.Π΅. Ссли Ρƒ вас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΈΠΉ Ρ‚ΠΈΠΏ T, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p Π½Π° этот Ρ‚ΠΈΠΏ

T *p;

ΠΈ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ t Ρ‚ΠΈΠΏΠ° T

T t;
p = &t;

ПослС этого выраТСния t ΠΈ *p Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’.Π΅. Ссли Π²Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, помСняСтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° *p, Ρ‚ΠΎ Ρ‚Π΅ΠΌ самым Π²Ρ‹ помСняСтС ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ t (ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ завСсти Π΅Ρ‰Π΅ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π­Ρ‚ΠΎ — элСмСнтарныС основы ΠΈΠ΄Π΅ΠΈ указатСля.

Ну Ρ‚Π°ΠΊ Π° Π΄Π°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ просто Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ T сам ΠΏΠΎ сСбС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ. Но это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ мСняСт. НСт Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ ситуациСй, ΠΊΠΎΠ³Π΄Π° T — это int, ΠΈ ситуациСй, ΠΊΠΎΠ³Π΄Π° T — это double *. ВсС Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ относится ΠΊ ΠΎΠ±ΠΎΠΈΠΌ случаям Π² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ€Π΅.

Π’ΠΎΡ‚, собствСнно ΠΈ всС. Π’.Π΅. Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ смысла Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² рассмотрСниС Ρ‚Π°ΠΊΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΠΊΠ°ΠΊ «ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ», ΠΈ ΡƒΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π΅Π΅ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ обсуТдСния. ВсС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ — это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ просто-напросто ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Но эти Π΄Π²Π° уровня ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (Ρ‚Ρ€ΠΈ, Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅, ΠΏΡΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ…) ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹, Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π΅ Π½Π΅ Π·Π½Π°ΡŽΡ‚ ΠΈ Π·Π½Π°Ρ‚ΡŒ Π½Π΅ хотят.

И Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π°Π΄ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π’ΠΎ ΠΆΠ΅ самоС Π² ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΌΠ΅Ρ€Π΅ справСдливо ΠΈ ΠΎΠ± «ΡƒΠΊΠ°Π·Π°Ρ‚Слях Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ», «ΡƒΠΊΠ°Π·Π°Ρ‚Слях Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ» ΠΈ Ρ‚.Π΄. Π΄ΠΎ бСсконСчности.

10.21 – Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ динамичСскиС ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ 9 июня 2021 Π² 21:53

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

Π­Ρ‚ΠΎΡ‚ ΡƒΡ€ΠΎΠΊ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, ΠΎΠ½ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ C++. НикакиС Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΡƒΡ€ΠΎΠΊΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ основаны Π½Π° этом ΡƒΡ€ΠΎΠΊΠ΅.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ – это ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ ΠΈΠ· названия: ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, содСрТащий адрСс Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ указатСля.

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

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠΉ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ:

int *ptr; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int, ΠΎΠ΄Π½Π° Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ°

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π²ΡƒΡ… Π·Π²Π΅Π·Π΄ΠΎΡ‡Π΅ΠΊ

int **ptrptr; // ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int, Π΄Π²Π΅ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ – Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ косвСнноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. А ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ само ΠΏΠΎ сСбС являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ снова Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ косвСнноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΡƒΠΆΠ΅ Ρ‡Π΅Ρ€Π΅Π· этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π­Ρ‚ΠΈ косвСнныС обращСния ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ:

int value = 5;
 
int *ptr = &value;
// КосвСнноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° int для получСния значСния int
std::cout << *ptr; 
 
int **ptrptr = &ptr;
// ΠΏΠ΅Ρ€Π²ΠΎΠ΅ косвСнноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ для получСния указатСля Π½Π° int,
// Π²Ρ‚ΠΎΡ€ΠΎΠ΅ косвСнноС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ для получСния значСния int
std::cout << **ptrptr;

ΠŸΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚:

5
5

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ нСпосрСдствСнно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

int value = 5;
int **ptrptr = &&value; // нСдопустимо

Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса (operator&) Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ l-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (l-value), Π½ΠΎ &value являСтся r-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (r-value).

Однако ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null:

int **ptrptr = nullptr; // Π΄ΠΎ C++11 ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ вмСсто этого 0

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π§Π°Ρ‰Π΅ всСго ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для динамичСского размСщСния массива ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

int **array = new int*[10]; // распрСдСляСм массив ΠΈΠ· 10 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ int

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ динамичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹ΠΉ массив, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ элСмСнты массива ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΈΠΏ Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° intΒ», Π° Π½Π΅ int.

Π”Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ динамичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Π΅ массивы

Π”Ρ€ΡƒΠ³ΠΎΠ΅ распространСнноС использованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ – ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅ динамичСского размСщСния ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов (для ΠΎΠ±Π·ΠΎΡ€Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов смотритС ΡƒΡ€ΠΎΠΊ Β«10.5 – ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы»).

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ фиксированного массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

int array[10][5];

ДинамичСскоС Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС. Π£ вас ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ соблазн ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅ этого:

int **array = new int[10][5]; // Π½Π΅ сработаСт!

Но это Π½Π΅ сработаСт.

Π—Π΄Π΅ΡΡŒ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Если ΠΊΡ€Π°ΠΉΠ½Π΅Π΅ ΠΏΡ€Π°Π²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ массива являСтся константой Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

int (*array)[5] = new int[10][5];

ΠšΡ€ΡƒΠ³Π»Ρ‹Π΅ скобки здСсь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для обСспСчСния ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°. Π’ C++11 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅ это подходящий случай для использования автоматичСского опрСдСлСния Ρ‚ΠΈΠΏΠ°:

auto array = new int[10][5]; // Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅!

К соТалСнию, это ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ссли ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΊΡ€Π°ΠΉΠ½Π΅Π΅ Π»Π΅Π²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ массива Π½Π΅ являСтся константой Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции. Π’ этом случаС ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. Π‘Π½Π°Ρ‡Π°Π»Π° ΠΌΡ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ (ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅). А Π·Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ этот массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта массива Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ динамичСский массив. Наш динамичСский Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив – это динамичСский ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив динамичСских ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов!

int **array = new int*[10]; // Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ массив ΠΈΠ· 10 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ int - это наши строки
for (int count = 0; count < 10; ++count)
    array[count] = new int[5]; // это наши столбцы

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ массиву, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ:

array[9][4] = 3; // Π­Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ (array[9])[4] = 3;

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ столбСц массива динамичСски размСщаСтся нСзависимо, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ динамичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ массив Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°:

int **array = new int*[10]; // Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ массив ΠΈΠ· 10 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ int - это наши строки
for (int count = 0; count < 10; ++count)
    array[count] = new int[count+1]; // это наши столбцы

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ array[0] – это массив Π΄Π»ΠΈΠ½ΠΎΠΉ 1, array[1] — это массив Π΄Π»ΠΈΠ½ΠΎΠΉ 2, ΠΈ Ρ‚.Π΄.

Для освобоТдСния памяти динамичСски Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ‚Π°ΠΊΠΆΠ΅ трСбуСтся Ρ†ΠΈΠΊΠ»:

for (int count = 0; count < 10; ++count)
    delete[] array[count];
delete[] array; // это Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π² послСднюю ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ удаляСм массив Π² порядкС, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π΅Π³ΠΎ созданию (сначала элСмСнты, Π·Π°Ρ‚Π΅ΠΌ сам массив). Если ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ массив Π΄ΠΎ элСмСнтов массива, Ρ‚ΠΎΠ³Π΄Π° Π½Π°ΠΌ потрСбуСтся доступ ΠΊ освобоТдСнной памяти, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эти элСмСнты. А это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ повСдСнию.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ освобоТдСниС памяти для Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… массивов слоТно, ΠΈ Π² Π½ΠΈΡ… Π»Π΅Π³ΠΊΠΎ ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ, часто Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ‰Π΅ Β«ΡΠ³Π»Π°Π΄ΠΈΡ‚ΡŒΒ» Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив (Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ x Π½Π° y) Π² ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ x * y:

// ВмСсто этого:
int **array = new int*[10]; // Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ массив ΠΈΠ· 10 ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ int - это наши строки
for (int count = 0; count < 10; ++count)
    array[count] = new int[5]; // это наши столбцы
 
// Π‘Π΄Π΅Π»Π°Π΅ΠΌ Ρ‚Π°ΠΊ
int *array = new int[50]; // массив 10x5, свСдСнный Π² Π΅Π΄ΠΈΠ½Ρ‹ΠΉ массив

Π—Π°Ρ‚Π΅ΠΌ, для прСобразования индСксов строки ΠΈ столбца ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π² ΠΎΠ΄ΠΈΠ½ индСкс ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΡƒ:

int getSingleIndex(int row, int col, int numberOfColumnsInArray)
{
     return (row * numberOfColumnsInArray) + col;
}
 
// устанавливаСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ array[9,4] Ρ€Π°Π²Π½Ρ‹ΠΌ 3, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ наш плоский массив
array[getSingleIndex(9, 4, 5)] = 3;

ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° указатСля ΠΏΠΎ адрСсу

Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для измСнСния фактичСского значСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΌΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ этот ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для измСнСния значСния указатСля, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ (Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‚Π°Π»ΠΈΡΡŒ?).

Однако Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция ΠΌΠΎΠ³Π»Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΎ, Π½Π° Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ссылку Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ здСсь большС ΠΎΠ± этом Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎ адрСсу ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠΎ ссылкС ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

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

Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ:

int ***ptrx3;

Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для динамичСского выдСлСния памяти для Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива. Однако для этого потрСбуСтся Ρ†ΠΈΠΊΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, Ρ‡Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняСт созданиС ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ:

int ****ptrx4;

Или большС, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅.

Однако Π½Π° самом Π΄Π΅Π»Π΅ Π² Π½ΠΈΡ… Π½Π΅ Π²ΠΈΠ΄Π½ΠΎ особой ΠΏΠΎΠ»ΡŒΠ·Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π½Π΅ часто Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ косвСнных ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π» ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Π’Π΅Π³ΠΈ

arrayC++ / CppLearnCppДинамичСскоС распрСдСлСниС памятиДля Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ / Pointer (ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅)

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ

Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ массива

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ массивы

П ΡƒΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ массив
int A[5] = <1, 2, 3, 4, 5>;
ΠœΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° массивы. Π’ частности, массив Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс, ΠΎΡ‚ΠΊΡƒΠ΄Π° Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π΅Π³ΠΎ элСмСнты. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ Π΄ΠΎ элСмСнтов массива
int *p = A;
Ρ‚ΠΎΠ³Π΄Π° Π²Ρ‹Π·ΠΎΠ² A[3] эквивалСнтСн Π²Ρ‹Π·ΠΎΠ²Ρƒ *(p + 3)
На самом Π΄Π΅Π»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ [ ] являСтся синтаксичСским сахаром – ΠΎΠ½ выполняСт Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² A[3] Ρ‚Π°ΠΊΠΆΠ΅ эквивалСнтСн Π²Ρ‹Π·ΠΎΠ²Ρƒ *(A + 3)

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ – ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ – это Π½Π΅ массивы!

Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ компилятор подмСняСт массив Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π”Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ (хотя ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Ρ‚ΠΎ массив отличаСтся ΠΎΡ‚ указатСля). Π’ΠΎ ΠΆΠ΅ самоС происходит ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Если функция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° массив, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‘Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π’ си сущСствуСт ΠΎΠ΄Π½Π° Π·Π°Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ. Если A[i] это всСго лишь синтаксичСский сахар, ΠΈ A[i] == *(A + i) , Ρ‚ΠΎ ΠΎΡ‚ смСны слагаСмых мСстами Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, Ρ‚. Π΅. A[i] == *(A + i) == *(i + A) == i[A] . Как Π±Ρ‹ странно это Π½ΠΈ Π·Π²ΡƒΡ‡Π°Π»ΠΎ, Π½ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ Π²Π°Π»ΠΈΠ΄Π΅Π½:

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы.

Π’ Π΅ΠΏΠ΅Ρ€ΡŒ рассмотрим Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π΅ скомпилируСтся. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ массива Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° рСкурсивноС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ явно, Π° пустыми ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ скобки. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ

ΠœΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку. Π”Π°Π»Π΅Π΅ Π²Ρ‹Π²Π΅Π»ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт. Π›ΠΈΠ±ΠΎ Ρ‚Π°ΠΊ – ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° строки

Волько здСсь ΡƒΠΆΠ΅ p Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π΅ΠΌ массива, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ. И Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Π»ΠΈΡΡŒ ΠΊ элСмСнтам массива Ρ‡Π΅Ρ€Π΅Π· массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ *p[3], Ρ‡Π΅Ρ€Π΅Π· имя массива ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ элСмСнту массива

Π’ΠΎΠΆΠ΅ самоС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ дСйствуСт ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Если функция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ указатСля Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎ нСльзя просто ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‘Π½ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π° Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρ‘Π½ массивом ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

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

БтатичСский Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив прСдставляСт собой ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ элСмСнты располоТСны Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎ рядам. ДинамичСски созданный Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив – это массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт этого массива Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс динамичСски созданного массива. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ нСльзя просто ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ имя статичСского Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива – ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ с Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

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

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π§Π°ΡΡ‚ΡŒ 3. НСуправляСмыС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ массивы. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° класс

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

  • 1. Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ нСуправляСмый ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ( * ) Π½Π° массив Ρ†Π΅Π»Ρ‹Ρ… чисСл?
  • 2. Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ нСуправляСмый ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ( * ) Π½Π° массив вСщСствСнных чисСл?
  • 3. ) Π½Π° класс
  • БвязанныС Ρ‚Π΅ΠΌΡ‹
1. Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ нСуправляСмый ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ( * ) Π½Π° массив Ρ†Π΅Π»Ρ‹Ρ… чисСл? ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив, Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ этому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎ ТСланию, ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ адрСс i -Π³ΠΎ элСмСнта массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ Π΄Π°Π½ массив Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΈΠΏ int :

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт массива Π΅ΡΡ‚ΡŒ 2 способа:

2. Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ нСуправляСмый ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ( * ) Π½Π° массив вСщСствСнных чисСл?

Для вСщСствСнных чисСл настройка указатСля Π½Π° массив осущСствляСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ для Ρ†Π΅Π»Ρ‹Ρ… чисСл:

3. Бпособы присвоСния нСуправляСмому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ ( * ) значСния адрСса Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ элСмСнта массива. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. Бпособы присвоСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ адрСса ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Бпособы присвоСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ адрСса i -Π³ΠΎ элСмСнта ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива.

4. Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нСуправляСмого ( * ) указатСля? ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. ΠŸΡƒΡΡ‚ΡŒ Π΄Π°Π½ массив A , содСрТащий 10 вСщСствСнных чисСл. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ значСния элСмСнтов массива с индСксами 0, 2, 7.

Рисунок 1 дСмонстрируСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Рисунок 1. ИзмСнСниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ элСмСнтов массива

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. ΠžΠ±Π½ΡƒΠ»Π΅Π½ΠΈΠ΅ массива Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля Π½Π° этот массив.

5. Как ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнтам Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ? ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. ΠŸΡƒΡΡ‚ΡŒ Π΄Π°Π½ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив M Ρ†Π΅Π»Ρ‹Ρ… чисСл ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p . Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ доступ ΠΊ элСмСнтам массива M Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Рисунок 2 дСмонстрируСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Рисунок 2. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Π”Π°Π½ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив вСщСствСнных чисСл Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 3Γ—4. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ элСмСнту массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 2, 3.

6. Доступ ΠΊ элСмСнтам ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ОписаниС указатСля Π½Π° Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 2Γ—3Γ—5. Доступ ΠΊ элСмСнту массива с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ указатСля.

7. Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ нСуправляСмый ( * ) ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру? ΠŸΡ€ΠΈΠΌΠ΅Ρ€ описания ΠΈ использования нСуправляСмого указатСля Π½Π° структуру

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1. ΠŸΡƒΡΡ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ описания класса описываСтся Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ – структура ARRAY_INTS :

Π’ΠΎΠ³Π΄Π°, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ класса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ события ΠΊΠ»ΠΈΠΊΠ° Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ΅) ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ структуру

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ структуру Ρ‚ΠΈΠΏΠ° ARRAY_INTS (см. ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€) ΠΈ доступ ΠΊ полям структуры Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ:

8. ) на класс.

Π’ Visual C++ , Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ создано для выполнСния Π² срСдС CLR , ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ управляСмый ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° класс. Π’ этом случаС класс Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ объявлСн с ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ref . Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти для указатСля осущСствляСтся ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ gcnew .

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ Π΄Π°Π½ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ описан Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Β« MyClass2.h Β«.

РСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Β« MyClass2.cpp Β» ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄:

Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ управляСмый ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° класс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’ этом постС я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ понятия Π² C ΠΈ C++, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ссылки ΠΈ массивы. Π’ частности, я ΠΎΡ‚Π²Π΅Ρ‡Ρƒ Π½Π° вопрос, Ρ‚Π°ΠΊ ΡΠ²Π»ΡΡŽΡ‚ΡΡ массивы C указатСлями ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

  • Π― Π±ΡƒΠ΄Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² C++ Π΅ΡΡ‚ΡŒ ссылки, Π° Π² C β€” Π½Π΅Ρ‚, поэтому я Π½Π΅ Π±ΡƒΠ΄Ρƒ постоянно Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ, ΠΎ ΠΊΠ°ΠΊΠΎΠΌ ΠΈΠΌΠ΅Π½Π½ΠΎ языкС (C/C++ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ C++) я сСйчас Π³ΠΎΠ²ΠΎΡ€ΡŽ, Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠΉΠΌΡ‘Ρ‚ это ΠΈΠ· контСкста;
  • Π’Π°ΠΊΠΆΠ΅, я ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΆΠ΅ Π·Π½Π°Π΅Ρ‚ C ΠΈ C++ Π½Π° Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΈ Π·Π½Π°Π΅Ρ‚, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, синтаксис объявлСния ссылки. Π’ этом постС я Π±ΡƒΠ΄Ρƒ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄ΠΎΡ‚ΠΎΡˆΠ½Ρ‹ΠΌ Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ ΠΌΠ΅Π»ΠΎΡ‡Π΅ΠΉ;
  • Π‘ΡƒΠ΄Ρƒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ выглядСло Π±Ρ‹ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ TYPE ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°. НапримСр, Ρ‚ΠΈΠΏ «массив Π΄Π»ΠΈΠ½Ρ‹ 2 int’ов» я Π±ΡƒΠ΄Ρƒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ int TYPE[2] ;
  • Π― Π±ΡƒΠ΄Ρƒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π² основном ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ int TYPE , int *TYPE ΠΈ Ρ‚. Π΄., для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ =, &, * ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ;
  • Β«ΠžΠ±ΡŠΠ΅ΠΊΡ‚Β» всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ «всё, Ρ‡Ρ‚ΠΎ Π½Π΅ ссылка», Π° Π½Π΅ «экзСмпляр класса»;
  • Π’Π΅Π·Π΄Π΅, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΠ³ΠΎΠ²ΠΎΡ€Π΅Π½Π½Ρ‹Ρ… случаСв, ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ΡΡ C89 ΠΈ C++98.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, я Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Ρƒ. πŸ™‚ Π‘ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ это Π·Π½Π°Π΅Ρ‚Π΅. Напомню лишь ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ (всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ находящимися Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, main):

Π’Π°ΠΊΠΆΠ΅ напомню ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: char β€” это всСгда Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ‚ ΠΈ Π²ΠΎ всСх стандартах C ΠΈ C++ sizeof (char) == 1 (Π½ΠΎ ΠΏΡ€ΠΈ этом стандарты Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π² Π±Π°ΠΉΡ‚Π΅ содСрТится ΠΈΠΌΠ΅Π½Π½ΠΎ 8 Π±ΠΈΡ‚ :)). Π”Π°Π»Π΅Π΅, Ссли ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚ΠΈΠΏ T число, Ρ‚ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ числСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ этого указатСля увСличится Π½Π° это число, ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Π½Π° sizeof (T) . Π’. Π΅. Ссли p ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ T *TYPE , Ρ‚ΠΎ p + 3 эквивалСнтно (T *)((char *)p + 3 * sizeof (T)) . АналогичныС сообраТСния относятся ΠΈ ΠΊ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΡŽ.

Бсылки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ссылок. Бсылки β€” это Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ синтаксисом ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ отличиями, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Ρ‘Ρ‚ дальшС. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π² Π½Ρ‘ΠΌ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΡŽΡ‚ ссылки вмСсто ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

Если слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° присваивания стоит ссылка, Ρ‚ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ…ΠΎΡ‚ΠΈΠΌ ΠΌΡ‹ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ самой ссылкС ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° ссылаСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Π°ΠΊΠΎΠ΅ присваиваниС всСгда присваиваСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π° Π½Π΅ ссылкС. Но это Π½Π΅ относится ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ссылки: инициализируСтся, разумССтся, сама ссылка. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ послС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ссылки Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ способа ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ саму, Ρ‚. Π΅. ссылка всСгда постоянна (Π½ΠΎ Π½Π΅ Π΅Ρ‘ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚).

Lvalue. Π’Π΅ выраТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ lvalue Π² C, C++ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… языках (это сокращСниС ΠΎΡ‚ Β«left valueΒ», Ρ‚. Π΅. слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства). ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ выраТСния Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ rvalue. ИмСна ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡΠ²Π»ΡΡŽΡ‚ΡΡ lvalue, Π½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΈ. ВыраТСния a[i + 2] , some_struct.some_field , *ptr , *(ptr + 3) β€” Ρ‚ΠΎΠΆΠ΅ lvalue.

Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ссылки ΠΈ lvalue β€” это Π² ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ смыслС ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅. Π”Π°Π²Π°ΠΉΡ‚Π΅ порассуТдаСм. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ lvalue? Π­Ρ‚ΠΎ Π½Π΅Ρ‡Ρ‚ΠΎ, Ρ‡Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ. Π’. Π΅. это Π½Π΅ΠΊΠΎΠ΅ фиксированноС мСсто Π² памяти, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ. Π’. Π΅. адрСс. Π’. Π΅. ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ ссылка (ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠΆΠ΅ Π·Π½Π°Π΅ΠΌ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ссылки β€” это Π΄Π²Π° синтаксичСски Ρ€Π°Π·Π½Ρ‹Ρ… способа Π² C++ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ понятиС адрСса). ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ скорСС ссылка, Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚. ΠΊ. ссылку ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ присваиваниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ссылка. Π—Π½Π°Ρ‡ΠΈΡ‚, lvalue β€” это ссылка.

А Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ссылка? Π­Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· синтаксисов для адрСса, Ρ‚. Π΅., ΠΎΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ, Ρ‡Π΅Π³ΠΎ-Ρ‚ΠΎ, ΠΊΡƒΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ»Π°ΡΡ‚ΡŒ. И ссылку ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства. Π—Π½Π°Ρ‡ΠΈΡ‚, ссылка β€” это lvalue.

ОкСй, Π½ΠΎ вСдь (ΠΏΠΎΡ‡Ρ‚ΠΈ любая) пСрСмСнная Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства. Π—Π½Π°Ρ‡ΠΈΡ‚, (такая) пСрСмСнная β€” ссылка? ΠŸΠΎΡ‡Ρ‚ΠΈ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ собой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ β€” ссылка.

Π˜Π½Ρ‹ΠΌΠΈ словами, допустим, ΠΌΡ‹ объявили int x . Π’Π΅ΠΏΠ΅Ρ€ΡŒ x β€” это пСрСмСнная Ρ‚ΠΈΠΏΠ° int TYPE ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π­Ρ‚ΠΎ int ΠΈ всё Ρ‚ΡƒΡ‚. Но Ссли я Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΈΡˆΡƒ x + 2 ΠΈΠ»ΠΈ x = 3 , Ρ‚ΠΎ Π² этих выраТСниях ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ x ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int &TYPE . ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΈΠ½Π°Ρ‡Π΅ этот x Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличался Π±Ρ‹ ΠΎΡ‚, скаТСм, 10, ΠΈ Π΅ΠΌΡƒ (ΠΊΠ°ΠΊ ΠΈ дСсяткС) нСльзя Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ.

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ (Β«Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” ссылка») β€” моя Π²Ρ‹Π΄ΡƒΠΌΠΊΠ°. Π’. Π΅. Π½ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠ΅, стандартС ΠΈ Ρ‚. Π΄. я этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π΅ Π²ΠΈΠ΄Π΅Π». Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠ½ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈ Π΅Π³ΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π²Π΅Ρ€Π½Ρ‹ΠΌ. Если Π±Ρ‹ я Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π» компилятор, я Π±Ρ‹ просто считал Ρ‚Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² выраТСниях ссылками, ΠΈ, Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊ ΠΈ прСдполагаСтся Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… компиляторах.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ особый Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… для lvalue (Ρ‚. Π΅. ссылка) сущСствуСт Π΄Π°ΠΆΠ΅ ΠΈ Π² C. ИмСнно Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ дальшС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ. ΠŸΡ€ΠΎΡΡ‚ΠΎ понятиС ссылки нСльзя Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ синтаксичСски Π² C, ссылку нСльзя ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ «любоС lvalue β€” ссылка» β€” Ρ‚ΠΎΠΆΠ΅ моя Π²Ρ‹Π΄ΡƒΠΌΠΊΠ°. А Π²ΠΎΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «любая ссылка β€” lvalueΒ» β€” Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½Π½Ρ‹ΠΉ, ΠΎΠ±Ρ‰Π΅ΠΏΡ€ΠΈΠ·Π½Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ (разумССтся, ссылка Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ссылкой Π½Π° измСняСмый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ присваиваниС).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ Π½Π°ΡˆΠΈΡ… соглашСний, сформулируСм строго ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ссылками: Ссли объявлСно, скаТСм, int x , Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ x ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int &TYPE . Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ это Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ссылка) стоит слСва ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства, Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ссылка, практичСски Π²ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ситуации x + 2 ) x автоматичСски конвСртируСтся Π² Ρ‚ΠΈΠΏ int TYPE (Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ, рядом с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ссылка Π½Π΅ конвСртируСтся Π² свой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, являСтся &, ΠΊΠ°ΠΊ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π΄Π°Π»Π΅Π΅). Π‘Π»Π΅Π²Π° ΠΎΡ‚ Π·Π½Π°ΠΊΠ° равСнства ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылка. Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (Π½Π΅ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΡƒΡŽ) ссылку ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылка.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ * ΠΈ &. Наши соглашСния ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎ-Π½ΠΎΠ²ΠΎΠΌΡƒ Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ * ΠΈ &. Π’Π΅ΠΏΠ΅Ρ€ΡŒ становится понятно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: опСрация * ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ (ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ это Π±Ρ‹Π»ΠΎ всСгда извСстно) ΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ. & примСняСтся всСгда ΠΊ ссылкС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, * ΠΈ & ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ссылки Π΄Ρ€ΡƒΠ³ Π² Π΄Ρ€ΡƒΠ³Π°. Π’. Π΅. ΠΏΠΎ сути ΠΎΠ½ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈ лишь Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ сущности ΠΎΠ΄Π½ΠΎΠ³ΠΎ синтаксиса Π½Π° сущности Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ! Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, & Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ Π½Π΅ совсСм ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ взятия адрСса: ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π° лишь ΠΊ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ адрСсу, просто ΠΎΠ½Π° мСняСт синтаксичСскоС Π²ΠΎΠΏΠ»ΠΎΡ‰Π΅Π½ΠΈΠ΅ этого адрСса.

Π—Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ссылки ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ int *x ΠΈ int &x . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ «объявлСниС подсказываСт использованиС» лишний Ρ€Π°Π· подтвСрТдаСтся: объявлСниС указатСля Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² ссылку, Π° объявлСниС ссылки β€” Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ &*EXPR (здСсь EXPR β€” это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€) эквивалСнтно EXPR всСгда, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл (Ρ‚. Π΅. всСгда, ΠΊΠΎΠ³Π΄Π° EXPR β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ), Π° *&EXPR Ρ‚ΠΎΠΆΠ΅ эквивалСнтно EXPR всСгда, ΠΊΠΎΠ³Π΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ смысл (Ρ‚. Π΅. ΠΊΠΎΠ³Π΄Π° EXPR β€” ссылка).

Π˜Ρ‚Π°ΠΊ, Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… β€” массив. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ массивы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π°ΠΊ:

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π΅ΠΌΠ΅Π½Π½ΠΎ константой Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ компиляции Π² C89 ΠΈ C++98. ΠŸΡ€ΠΈ этом Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобках Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚ΠΎΡΡ‚ΡŒ число, пустыС ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ скобки Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ.

Подобно Ρ‚ΠΎΠΌΡƒ, ΠΊΠ°ΠΊ всС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ (напомню, ΠΌΡ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° находятся Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ) находятся Π½Π° стСкС, массивы Ρ‚ΠΎΠΆΠ΅ находятся Π½Π° стСкС. Π’. Π΅. ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠ²Ρ‘Π» ΠΊ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΡŽ прямо Π½Π° стСкС ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° памяти Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 5 * sizeof (int) , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ размСщаСтся наш массив. НС Π½ΡƒΠΆΠ½ΠΎ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠ΄ объявил Π½Π΅ΠΊΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½ΡƒΡŽ Π³Π΄Π΅-Ρ‚ΠΎ Ρ‚Π°ΠΌ Π΄Π°Π»Π΅ΠΊΠΎ, Π² ΠΊΡƒΡ‡Π΅. НСт, ΠΌΡ‹ объявили массив, самый настоящий. Π—Π΄Π΅ΡΡŒ, Π½Π° стСкС.

Π§Π΅ΠΌΡƒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ sizeof (x) ? РазумССтся, ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ нашСго массива, Ρ‚. Π΅. 5 * sizeof (int) . Если ΠΌΡ‹ пишСм

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

ΠžΡ‚ массива ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ адрСс ( &x ), ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ самый настоящий ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Ρ‚ΠΎ мСсто, Π³Π΄Π΅ этот массив располоТСн. Π’ΠΈΠΏ Ρƒ выраТСния &x , ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ int (*TYPE)[5] . Π’ Π½Π°Ρ‡Π°Π»Π΅ массива Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ Π΅Π³ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт, поэтому адрСс самого массива ΠΈ адрСс Π΅Π³ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ элСмСнта числСнно ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚. Π’. Π΅. &x ΠΈ &(x[0]) числСнно Ρ€Π°Π²Π½Ρ‹ (Ρ‚ΡƒΡ‚ я Π»ΠΈΡ…ΠΎ написал Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ &(x[0]) , Π½Π° самом Π΄Π΅Π»Π΅ Π² Π½Ρ‘ΠΌ Π½Π΅ всё Ρ‚Π°ΠΊ просто, ΠΊ этому ΠΌΡ‹ Π΅Ρ‰Ρ‘ вСрнёмся). Но эти выраТСния ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ β€” int (*TYPE)[5] ΠΈ int *TYPE , поэтому ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ == Π½Π΅ получится. Но ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€ΡŽΠΊ с void * : ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ истинным: (vo >.

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, я вас ΡƒΠ±Π΅Π΄ΠΈΠ», Ρ‡Ρ‚ΠΎ массив β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ массив, Π° Π½Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΅Ρ‰Ρ‘. ΠžΡ‚ΠΊΡƒΠ΄Π° Ρ‚ΠΎΠ³Π΄Π° бСрётся вся эта ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями ΠΈ массивами? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ имя массива ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΏΡ€ΠΈ Π»ΡŽΠ±Ρ‹Ρ… опСрациях прСобразуСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΅Π³ΠΎ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт.

Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ объявили int x[5] . Если ΠΌΡ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пишСм x + 0 , Ρ‚ΠΎ это ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ наш x (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π» Ρ‚ΠΈΠΏ int TYPE[5] , ΠΈΠ»ΠΈ, Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ, int (&TYPE)[5] ) Π² &(x[0]) , Ρ‚. Π΅. Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт массива x. Π’Π΅ΠΏΠ΅Ρ€ΡŒ наш x ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int *TYPE .

ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ массива Π² void * ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΌΡƒ == Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ этого ΠΈΠΌΠ΅Π½ΠΈ Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, поэтому:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ []. Π—Π°ΠΏΠΈΡΡŒ a[b] всСгда эквивалСнтна *(a + b) (напомню, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ рассматриваСм пСрСопрСдСлСния operator[] ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, запись x[2] ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  • x[2] эквивалСнтно *(x + 2)
  • x + 2 относится ΠΊ Ρ‚Π΅ΠΌ опСрациям, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… имя массива прСобразуСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, поэтому это происходит
  • Π”Π°Π»Π΅Π΅, Π² соотвСтствии с ΠΌΠΎΠΈΠΌΠΈ объяснСниями Π²Ρ‹ΡˆΠ΅, x + 2 эквивалСнтно (int *)((char *)x + 2 * sizeof (int)) , Ρ‚. Π΅. x + 2 ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ x Π½Π° Π΄Π²Π° int’а»
  • НаконСц, ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° бСрётся опСрация разымСнования ΠΈ ΠΌΡ‹ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΠΌ Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ ΠΏΠΎ этому сдвинутому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ

Π’ΠΈΠΏΡ‹ Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Π²ΡˆΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Π’Π°ΠΊΠΆΠ΅ Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ слСва ΠΎΡ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобок Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ массив, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ (x + 2)[3] , ΠΈ это Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтно x[5] . Π•Ρ‰Ρ‘ Π·Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ *a ΠΈ a[0] всСгда эквивалСнтны, ΠΊΠ°ΠΊ Π² случаС, ΠΊΠΎΠ³Π΄Π° a β€” массив, Ρ‚Π°ΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° a β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠ°ΠΊ я ΠΈ ΠΎΠ±Π΅Ρ‰Π°Π», я Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡΡŒ ΠΊ &(x[0]) . Π’Π΅ΠΏΠ΅Ρ€ΡŒ ясно, Ρ‡Ρ‚ΠΎ Π² этом Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ спСрва x прСобразуСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π·Π°Ρ‚Π΅ΠΌ ΠΊ этому ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π² соотвСтствии с Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ примСняСтся [0] ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int &TYPE , ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ & ΠΎΠ½ΠΎ прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ int *TYPE . ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ этого слоТного выраТСния (Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΆΠ΅ выполняСтся ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ массива ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ) Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ простоС понятиС прСобразования массива ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ β€” это Π±Ρ‹Π» Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΡƒΡ…Π»Ρ‘ΠΆ.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вопрос Π½Π° засыпку: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ &x + 1 ? Π§Ρ‚ΠΎ ΠΆ, &x β€” это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° вСсь массив Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ, + 1 ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡˆΠ°Π³Ρƒ Π½Π° вСсь этот массив. Π’. Π΅. &x + 1 β€” это (int (*)[5])((char *)&x + sizeof (int [5])) , Ρ‚. Π΅. (int (*)[5])((char *)&x + 5 * sizeof (int)) (здСсь int (*)[5] β€” это int (*TYPE)[5] ). Π˜Ρ‚Π°ΠΊ, &x + 1 числСнно Ρ€Π°Π²Π½ΠΎ x + 5 , Π° Π½Π΅ x + 1 , ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ. Π”Π°, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая находится Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ массива (сразу послС послСднСго элСмСнта), Π½ΠΎ ΠΊΠΎΠ³ΠΎ это Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚? Π’Π΅Π΄ΡŒ Π² C всё Ρ€Π°Π²Π½ΠΎ Π½Π΅ провСряСтся Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива. Π’Π°ΠΊΠΆΠ΅, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ *(&x + 1) == x + 5 истинно. Π•Ρ‰Ρ‘ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: (&x)[1] == x + 5 . Π’Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ истинным *((&x)[1]) == x[5] , ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ самоС, (&x)[1][0] == x[5] (Ссли ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ схватим segmentation fault Π·Π° ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ обращСния Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ нашСй памяти :)).

Массив нСльзя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Если Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ int x[2] ΠΈΠ»ΠΈ int x[] Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ эквивалСнтно int *x ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (sizeof ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊ Ρƒ указатСля). ΠŸΡ€ΠΈ этом Ρ€Π°Π·ΠΌΠ΅Ρ€ массива, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π’Ρ‹ запросто ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ int x[2] ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ρ‚ΡƒΠ΄Π° массив Π΄Π»ΠΈΠ½Ρ‹ 3.

Однако, Π² C++ сущСствуСт способ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ссылку Π½Π° массив:

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π²Ρ‹ всё Ρ€Π°Π²Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚Π΅ лишь ссылку, Π° Π½Π΅ массив, Ρ‚. Π΅. массив Π½Π΅ копируСтся. Но всё ΠΆΠ΅ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ нСсколько ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ указатСля. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ΡΡ ссылка Π½Π° массив. ВмСсто Π½Π΅Ρ‘ нСльзя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. НуТно ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ массив ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ссылка Π½Π° массив Π±ΡƒΠ΄Π΅Ρ‚ вСсти сСбя ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊΠ°ΠΊ ссылка Π½Π° массив, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρƒ Π½Π΅Ρ‘ Π±ΡƒΠ΄Π΅Ρ‚ sizeof ΠΊΠ°ΠΊ Ρƒ массива.

И Ρ‡Ρ‚ΠΎ самоС интСрСсноС, эту ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠŸΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° функция std::end Π² C++11 для массивов.

Β«Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив». Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив» β€” это ΠΈΠΌΠ΅Π½Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив ΠΈ Π½ΠΈΡ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π˜Π½Ρ‹ΠΌΠΈ словами:

Однако, ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ΄ Ρ„Ρ€Π°Π·ΠΎΠΉ Β«ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив» Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½ массив, Π΄Π°ΠΆΠ΅ Ссли Ρ‚ΠΈΠΏ Ρƒ этого указатСля нСподходящий. Π’ соотвСтствии с Ρ‚Π°ΠΊΠΈΠΌ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ c ΠΈ d (ΠΈ b + 0 ) β€” это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° массивы.

ΠœΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ массивы. Если объявлСно int x[5][7] , Ρ‚ΠΎ x β€” это Π½Π΅ массив Π΄Π»ΠΈΠ½Ρ‹ 5 Π½Π΅ΠΊΠΈΡ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ. НСт, x Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ β€” это Π΅Π΄ΠΈΠ½Ρ‹ΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 5 x 7, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹ΠΉ Π½Π° стСкС. sizeof (x) Ρ€Π°Π²Π΅Π½ 5 * 7 * sizeof (int) . Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² памяти Ρ‚Π°ΠΊ: x[0][0] , x[0][1] , x[0][2] , x[0][3] , x[0][4] , x[0][5] , x[0][6] , x[1][0] ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Когда ΠΌΡ‹ пишСм x[0][0] , события Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ:

Π’ΠΎ ΠΆΠ΅ самоС относится ΠΊ **x . Π—Π°ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ Π² выраТСниях, скаТСм, x[0][0] + 3 ΠΈ **x + 3 Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· памяти происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (нСсмотря Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π΄Π²ΡƒΡ… Π·Π²Ρ‘Π·Π΄ΠΎΡ‡Π΅ΠΊ), Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ прСобразования ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ссылки Ρ‚ΠΈΠΏΠ° int &TYPE просто Π² int TYPE . Π’. Π΅. Ссли Π±Ρ‹ ΠΌΡ‹ взглянули Π½Π° ассСмблСрный ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ гСнСрируСтся ΠΈΠ· выраТСния **x + 3 , ΠΌΡ‹ Π±Ρ‹ Π² Π½Ρ‘ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ опСрация извлСчСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· памяти выполняСтся Ρ‚Π°ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. **x + 3 ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Ρ‘ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ *(int *)x + 3 .

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ:

Π§Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ y? y β€” это ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив (Π² Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ смыслС!) ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° массивы (ΠΎΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ, Π² Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ смыслС). НигдС здСсь Π½Π΅ появляСтся Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 5 x 7, Π΅ΡΡ‚ΡŒ 5 Π±Π»ΠΎΠΊΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 7 * sizeof (int) , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄Π°Π»Π΅ΠΊΠΎ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. Π§Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ y[0][0] ?

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пишСм y[0][0] + 3 , ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· памяти происходит Π΄Π²Π° Ρ€Π°Π·Π°: ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· массива y ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· массива y[0] , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ массива y. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° этого Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ здСсь Π½Π΅ происходит прСобразования ΠΈΠΌΠ΅Π½ΠΈ массива Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° с ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌ массивом x. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ **y + 3 здСсь Π½Π΅ эквивалСнтСн *(int *)y + 3 .

Объясню Π΅Ρ‰Ρ‘ Ρ€Π°Π·ΠΎΠΊ. x[2][3] эквивалСнтно *(*(x + 2) + 3) . И y[2][3] эквивалСнтно *(*(y + 2) + 3) . Но Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС наша Π·Π°Π΄Π°Ρ‡Π° Π½Π°ΠΉΡ‚ΠΈ Β«Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ряду» Π² Π΅Π΄ΠΈΠ½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 5 x 7 (разумССтся, элСмСнты Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ с нуля, поэтому этот Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ элСмСнт Π±ΡƒΠ΄Π΅Ρ‚ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ смыслС Ρ‡Π΅Ρ‚Π²Ρ‘Ρ€Ρ‚Ρ‹ΠΌ :)). ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ вычисляСт, Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π½ΡƒΠΆΠ½Ρ‹ΠΉ элСмСнт находится Π½Π° 2 * 7 + 3 -ΠΌ мСстС Π² этом Π±Π»ΠΎΠΊΠ΅ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π΅Π³ΠΎ. Π’. Π΅. x[2][3] здСсь эквивалСнтно ((int *)x)[2 * 7 + 3] , ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС, *((int *)x + 2 * 7 + 3) . Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС спСрва ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ 2-ΠΉ элСмСнт Π² массивС y, Π° Π·Π°Ρ‚Π΅ΠΌ 3-ΠΉ элСмСнт Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌ массивС.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ x + 2 , ΠΌΡ‹ сдвигаСмся сразу Π½Π° 2 * sizeof (int [7]) , Ρ‚. Π΅. Π½Π° 2 * 7 * sizeof (int) . Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС, y + 2 β€” это сдвиг Π½Π° 2 * sizeof (int *) .

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС (void *)x ΠΈ (void *)*x (ΠΈ (void *)&x !) β€” это ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ β€” это Π½Π΅ Ρ‚Π°ΠΊ.

C / C ++: ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ _ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ ссылку Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

ΠŸΠΈΡΠ°Ρ‚ΡŒ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ

  БСгодня я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ использовании ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

γ€€γ€€

Π― просто Π½Π°Ρ‡Π°Π» Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… P Ρ€Π°Π²Π½Ρ‹ 6. Π’ Ρ‚ΠΎ врСмя я чувствовал, Ρ‡Ρ‚ΠΎ адрСса, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²Π° p, Π±Ρ‹Π»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ, поэтому, Ссли я Ρ…ΠΎΡ‚Π΅Π» ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, я ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΠΎΠ±Π°.

Π­Ρ‚ΠΎ ошибка ΠΎΡ‡Π΅Π½ΡŒ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня.АдрСса, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²Π° p, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹, Π½ΠΎ адрСса Π΄Π²ΡƒΡ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹.

НапримСр, Π΄Π²Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π·Π½Π°ΡŽΡ‚, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ Π²ΠΎΠΊΠ·Π°Π»Π°, Π½ΠΎ нСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ΄ΠΈΠ½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π·Π°Π±Ρ‹Π» Π²ΠΎΠΊΠ·Π°Π» Π²ΠΎ врСмя ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Он Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ высокоскоростной ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠΉ Π΄ΠΎΡ€ΠΎΠ³ΠΈ. станции, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π΄ΠΎ Π²ΠΎΠΊΠ·Π°Π»Π°. Π­Ρ‚ΠΎ Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚ΠΎ, ΠΎΠ½ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠΊΠ·Π°Π».

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Π° ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ p Π² main? Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π΅ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ:

  • Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ указатСля
  • Бсылка Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

Β 

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ указатСля

γ€€γ€€

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС:

Π’ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС указатСля, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ адрСс самого указатСля Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ.

НапримСр, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ собираСмся Π½Π° Π²ΠΎΠΊΠ·Π°Π», Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π·Π½Π°Π΅Ρ‚ Π΅Π³ΠΎ мСстонахоТдСниС. Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΎΠΊΠ·Π°Π», ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала Π½Π°ΠΉΡ‚ΠΈ этого Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° ΠΏΠΎ адрСсу, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΎΠΊΠ·Π°Π» Π½Π° основС Π½Π° этого Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°.

ΠžΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ** p =&(&(p)), & P относится ΠΊ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΄ΠΎΡ€ΠΎΠΆΠ½ΠΎΠΉ станции. & (& (p)) — адрСс Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π½Π°Π΅Ρ‚ Π²ΠΎΠΊΠ·Π°Π».

Если ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ p, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ, Π° послС нахоТдСния ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ адрСс ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΄ΠΎΡ€ΠΎΠΆΠ½ΠΎΠΉ станции. Π­Ρ‚ΠΎΡ‚ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π½Π°Ρ‚ΡŒ адрСс Π½ΠΎΠ²ΠΎΠΉ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠ΄ΠΎΡ€ΠΎΠΆΠ½ΠΎΠΉ станции.

Бсылка Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

γ€€γ€€

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС:

Бсылка Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π³Π΄Π΅ Π΄Π²Π° указатСля ΠΏΠΎ сущСству ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹,P Π² смСнСЭто P Π² основном. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ просто ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ.

Π›ΠΈΡ‡Π½ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ссылка — это Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ указатСля, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ & Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ *.

γ€€γ€€

Β 

Β 

ΠŸΠ΅Ρ€Π΅ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ΠΎ ΠΏΠΎ адрСсу: https://www.cnblogs.com/MrSaver/p/6036758.html

Pointers Π² Golang — Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…

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

ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ πŸ‘‘ ΠΊΠ°Π½Π°Π» ΠΏΠΎ Golang

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ Π²Π°ΠΌ супСр TELEGRAM ΠΊΠ°Π½Π°Π» ΠΏΠΎ Golang Π³Π΄Π΅ собраны всС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для качСствСнного изучСния языка. Π£Π΄ΠΈΠ²ΠΈΡ‚Π΅ всСх своими знаниями Π½Π° собСсСдовании! 😎

ΠŸΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° ΠΊΠ°Π½Π°Π»

Π£Ρ€ΠΎΠΊΠΈ, ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ Π’ΠΈΠ΄Π΅ΠΎ

ΠœΡ‹ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌ Π² ΠΏΠ°Π±Π»ΠΈΠΊΠ΅ Π’Πš ΠΈ Telegram качСствСнныС ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ для быстрого изучСния Go. ΠŸΠΎΠ΄ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° нас Π² Π’Πš ΠΈ Π² Telegram. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ сообщСство Go программистов.

Go Π² Π’Πš

ЧАВ в Telegram

  • ΠžΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ;
  • Π Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² связи ΠΌΠ΅ΠΆΠ΄Ρƒ указатСлями ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ RAM;
  • Π£Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ, Π° ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈ Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ городского здания Π΅ΡΡ‚ΡŒ нСбольшая Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠ°, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΡƒΠ»ΠΈΡ†Ρ‹ ΠΈ Π½ΠΎΠΌΠ΅Ρ€ Π΄ΠΎΠΌΠ°. Вакая систСма ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² мСстности ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹. На Π΄Π²Π΅Ρ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²ΡˆΠΈΡ…ΡΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ ΠΏΡ€ΠΈΠΊΠ»Π΅ΠΈΠ²Π°ΡŽΡ‚ объявлСния с пояснСниями Π²Ρ€ΠΎΠ΄Π΅ Β«Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΅Ρ…Π°Π»ΠΈ!Β» ΠΈ Π½ΠΎΠ²Ρ‹ΠΌ адрСсом. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ записки ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ адрСс.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

ВсС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ косвСнной адрСсации…

Дэвид Π’ΠΈΠ»Π΅Ρ€

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π° Π½ΠΈΠΌΠΈ слоТилась Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ приятная рСпутация. Π―Π·Ρ‹ΠΊΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ, Π‘ Π² частности, Π΄Π΅Π»Π°ΡŽΡ‚ Π°ΠΊΡ†Π΅Π½Ρ‚ Π½Π° бСзопасности. Π‘Π±ΠΎΠΈ ΠΈ уязвимости Π² Π·Π°Ρ‰ΠΈΡ‚Π΅ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ связаны с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ использованиСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. ВслСдствиС этого, стал Π·Π°ΠΌΠ΅Ρ‚Π΅Π½ рост популярности Ρ‚Π΅Ρ… языков, Ρ‡Ρ‚ΠΎ Π½Π΅ сильно ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

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

Если Π²Ρ‹ Ρ€Π°Π½ΡŒΡˆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ с указатСлями, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΆΠΈΠ²Π°ΠΉΡ‚Π΅. БСйчас всС Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅. Если Π²Ρ‹ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚Π΅ΡΡŒ с указатСлями Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅, Ρ€Π°ΡΡΠ»Π°Π±ΡŒΡ‚Π΅ΡΡŒ. Go станСт ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ для изучСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Как ΠΈ вывСска Π½Π° двСрях ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ адрСс, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΊ мСсту, Π³Π΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹Ρ… ситуациях, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

АмпСрсанд (&) ΠΈ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° астСриск (*) Π² Golang

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² Go Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ-ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ²ΡˆΠΈΠΉΡΡ синтаксис, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π‘. Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° символа β€” ампСрсанд (&) ΠΈ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° астСриск (*). Однако Ρƒ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΈ Π΄Π²Π° назначСния, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π΄Π°Π»Π΅Π΅.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса прСдставлСн ампСрсандом. Он опрСдСляСт адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² памяти. ЗначСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… хранятся Π² памяти RAM, Π° мСсто хранСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ адрСсом памяти. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ адрСс памяти ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠ³ΠΎ числа. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ адрСс Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ.

answer := 42
fmt.Println(&answer) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: 0x1040c108

answer := 42

fmt.Println(&answer) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: 0x1040c108

Π­Ρ‚ΠΎ мСсто Π² памяти, Π³Π΄Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Ρ…Ρ€Π°Π½ΠΈΡ‚ 42. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ answer для получСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ вмСсто Ρ‚ΠΎΠ³ΠΎ адрСса памяти, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: Π’Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ адрСс строкового Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°, числа ΠΈΠ»ΠΈ Π±ΡƒΠ»Π΅Π²Π° значСния. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Go сообщит ΠΎΠ± ошибкС для &42 ΠΈΠ»ΠΈ &"another level of indirection".

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса (&) прСдоставляСт адрСс памяти значСния. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ опСрация называСтся Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ обращаСтся адрСс памяти. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ листингС происходит Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ пСрСмСнная address разымСнуСтся Ρ‡Π΅Ρ€Π΅Π· прСфикс Π² Π²ΠΈΠ΄Π΅ астСрикса (*).

answer := 42
fmt.Println(&answer) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: 0x1040c108

address := &answer
fmt.Println(*address) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: 42

answer := 42

fmt.Println(&answer) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: 0x1040c108

Β 

address := &answer

fmt.Println(*address) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: 42

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ Π½Π° Π‘Ρ…Π΅ΠΌΠ΅ 1 пСрСмСнная address содСрТит адрСс памяти для answer. Π‘Π°ΠΌΠΎΠ³ΠΎ answer (42) Ρ‚Π°ΠΌ Π½Π΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ извСстно, Π³Π΄Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ.

АдрСсами памяти Π² Π‘ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΡƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ( ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, address++), Π½ΠΎ Go Π½Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСбСзопасныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π‘Ρ…Π΅ΠΌΠ° 1: address ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° answer

Вопросы для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:
  1. Π§Ρ‚ΠΎ fmt.Println(*&answer) ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π² ЛистингС 2?
  2. Как компилятор Go ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ?

ΠžΡ‚Π²Π΅Ρ‚Ρ‹

  1. Он Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 42, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ адрСс памяти (&) обращаСтся ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² памяти (*), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ;
  2. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся инфиксным ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° значСния, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ разымСнования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€ΠΎΠ»ΠΈ прСфикса для СдинствСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
  1. Он Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ 42, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ адрСс памяти (&) обращаСтся ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² памяти (*), Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ;
  2. Π£ΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся инфиксным ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π΄Π²Π° значСния, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ разымСнования ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ€ΠΎΠ»ΠΈ прСфикса для СдинствСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’ΠΈΠΏΡ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Golang

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ хранят адрСса памяти.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ address Π² ЛистингС 2 являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΈΠΏΠ° *int, ΠΎΠ± этом сообщаСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ %Π’ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

answer := 42
address := &answer

fmt.Printf(«address это %T\n», address) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: address это *int

answer := 42

address := &answer

Β 

fmt.Printf(«address это %T\n», address) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: address это *int

Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° Π² *int Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΈΠΏ указатСля. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° int.

Π’ΠΈΠΏΡ‹ указатСля ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Ρ‚ΠΈΠΏΡ‹ ΠΏΠΎΠ»Π΅ΠΉ структуры ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° (*) Π² объявлСнии home поясняСт, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΈΠΏ указатСля.

canada := «Canada»

var home *string
fmt.Printf(«home is a %T\n», home) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: home is a *string

home = &canada
fmt.Println(*home) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Canada

canada := «Canada»

Β 

var home *string

fmt.Printf(«home is a %T\n», home) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚:Β Β home is a *string

Β 

home = &canada

fmt.Println(*home) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Canada

Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ указатСля, Π° Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½ΡƒΠΆΠ½Π° для указания Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ отсылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ home Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ листингС ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π»ΡŽΠ±ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° string Однако компилятор Go Π½Π΅ позволяСт home ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, Π² Ρ‚ΠΎΠΌ числС int.

Π’ΠΈΠΏ систСмы Π‘ Π»Π΅Π³ΠΊΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ адрСс памяти содСрТит Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ. Π’Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΎΠ΄Π½Π°ΠΊΠΎ Go ΠΈΠ·Π±Π΅Π³Π°Π΅Ρ‚ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ нСбСзопасных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Вопросы для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:
  1. Какой ΠΊΠΎΠ΄ Π²Ρ‹ Π±Ρ‹ использовали для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ address, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ†Π΅Π»Ρ‹Π΅ числа?
  2. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСниСм Ρ‚ΠΈΠΏΠ° указатСля ΠΈ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ указатСля Π² ЛистингС 4?

ΠžΡ‚Π²Π΅Ρ‚Ρ‹

  1. var address *intΒ 
  2. Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ указатСля, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ссылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.
  1. var address *intΒ 
  2. Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ указатСля, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для указания Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ссылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для указания Golang

Π§Π°Ρ€Π»ΡŒΠ· Π‘ΠΎΠ»Π΄Π΅Π½ стал администратором NASA Π² 17 июля 2009 Π³ΠΎΠ΄Π°. Он принял пост послС ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€Π° Π‘ΠΊΠΎΠ»Π΅Π·Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ администратора Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ листинг ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ administrator Ρ‚ΠΎΠΌΡƒ, ΠΊΡ‚ΠΎ выполняСт Π΄Π°Π½Π½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ. Для Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π‘Ρ…Π΅ΠΌΡƒ 2.

var administrator *string

scolese := «Christopher J. Scolese»
administrator = &scolese
fmt.Println(*administrator) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Christopher J. Scolese

bolden := «Charles F. Bolden»
administrator = &bolden
fmt.Println(*administrator) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Charles F. Bolden

var administrator *string

Β 

scolese := «Christopher J. Scolese»

administrator = &scolese

fmt.Println(*administrator) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Christopher J. Scolese

Β 

bolden := «Charles F. Bolden»

administrator = &bolden

fmt.Println(*administrator) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Charles F. Bolden

Π‘Ρ…Π΅ΠΌΠ° 2: administrator ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° bolden

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ bolden ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ пСрСмСнная administrator ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° bolden вмСсто хранСния ΠΊΠΎΠΏΠΈΠΈ:

bolden = «Charles Frank Bolden Jr.»
fmt.Println(*administrator) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Charles Frank Bolden Jr.

bolden = «Charles Frank Bolden Jr.»

fmt.Println(*administrator) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Charles Frank Bolden Jr.

МоТно Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ administrator для нСпрямого измСнСния значСния bolden:

*administrator = «Maj. Gen. Charles Frank Bolden Jr.»
fmt.Println(bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Maj. Gen. Charles Frank Bolden Jr.

*administrator = «Maj. Gen. Charles Frank Bolden Jr.»

fmt.Println(bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Maj. Gen. Charles Frank Bolden Jr.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ присваивания major ΠΊ administrator являСтся Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° строку bolden. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π½Π° Π‘Ρ…Π΅ΠΌΠ΅ 3.

major := administrator
*major = «Major General Charles Frank Bolden Jr.»
fmt.Println(bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Major General Charles Frank Bolden Jr.

major := administrator

*major = «Major General Charles Frank Bolden Jr.»

fmt.Println(bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Major General Charles Frank Bolden Jr.

Π‘Ρ…Π΅ΠΌΠ° 3: administrator ΠΈ major ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° bolden

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ major ΠΈ administrator ΠΎΠ±Π° содСрТат ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс памяти, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ΠΈ Ρ€Π°Π²Π½Ρ‹:

fmt.Println(administrator == major) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: true

fmt.Println(administrator == major) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: true

20 января 2017 Π³ΠΎΠ΄Π° Π½Π° смСну Π§Π°Ρ€Π»ΡŒΠ·Ρƒ Π‘ΠΎΠ»Π΄Π΅Π½Ρƒ ΠΏΡ€ΠΈΡˆΠ΅Π» Π ΠΎΠ±Π΅Ρ€Ρ‚ М. Π›Π°ΠΉΡ‚Ρ„ΡƒΡ‚. ПослС Π΄Π°Π½Π½ΠΎΠ³ΠΎ измСнСния administrator ΠΈ major пСрСстали ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ адрСс памяти. ПояснСниС Π½Π° Π‘Ρ…Π΅ΠΌΠ΅ 4.

lightfoot := «Robert M. Lightfoot Jr.»
administrator = &lightfoot
fmt.Println(administrator == major) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: false

lightfoot := «Robert M. Lightfoot Jr.»

administrator = &lightfoot

fmt.Println(administrator == major) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: false

Π‘Ρ…Π΅ΠΌΠ° 4: administrator Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° lightfoot

ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ значСния major ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ создаСт копию строки. ПослС создания ΠΊΠ»ΠΎΠ½Π° прямыС ΠΈ нСпрямыС измСнСния с bolden Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ эффСкт Π½Π°Π΄ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ charles ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚:

charles := *major
*major = «Charles Bolden»
fmt.Println(charles) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Major General Charles Frank Bolden Jr.
fmt.Println(bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Charles Bolden

charles := *major

*major = «Charles Bolden»

fmt.Println(charles) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Major General Charles Frank Bolden Jr.

fmt.Println(bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Charles Bolden

Если Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ содСрТат ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ строку, ΠΎΠ½ΠΈ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ, ΠΊΠ°ΠΊ Π² случаС с charles ΠΈ bolden Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅. Π”Π°ΠΆΠ΅ нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡ… адрСса памяти ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ:

charles = «Charles Bolden»
fmt.Println(charles == bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: true
fmt.Println(&charles == &bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: false

charles = «Charles Bolden»

fmt.Println(charles == bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: true

fmt.Println(&charles == &bolden) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: false

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ bolden Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π½Π΅ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ administrator ΠΈ major. Π­Ρ‚ΠΎ дСмонстрируСт Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ прямым присваиваниС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊ bolden.

Вопросы для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:
  1. Π’ Ρ‡Π΅ΠΌ прСимущСство использования указатСля Π² ЛистингС 5?
  2. ΠžΠΏΠΈΡˆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°ΡŽΡ‚ major := administrator ΠΈ charles := *major.

ΠžΡ‚Π²Π΅Ρ‚Ρ‹

ИзмСнСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сдСланы Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСнная administrator ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π»ΠΈΡ†ΠΎ, Π½ΠΎ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ копию;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ major являСтся Π½ΠΎΠ²Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ *string, Ρ‡Ρ‚ΠΎ содСрТит Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс памяти, Ρ‡Ρ‚ΠΎ ΠΈ administrator, Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ charles являСтся строкой, содСрТащСй копию значСния major, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚.

ИзмСнСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сдСланы Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ пСрСмСнная administrator ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π»ΠΈΡ†ΠΎ, Π½ΠΎ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ копию;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ major являСтся Π½ΠΎΠ²Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ *string, Ρ‡Ρ‚ΠΎ содСрТит Ρ‚ΠΎΡ‚ ΠΆΠ΅ адрСс памяти, Ρ‡Ρ‚ΠΎ ΠΈ administrator, Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ charles являСтся строкой, содСрТащСй копию значСния major, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ структуры Go

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ рСгулярно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ со структурами. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ языка Go Ρ€Π΅ΡˆΠΈΠ»ΠΈ ввСсти нСсколько ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… инструмСнтов для ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ структур.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ строк ΠΈ чисСл, ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ ставится прСфикс Π² Π²ΠΈΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° адрСса. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная timmy содСрТит адрСс памяти, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° структуру person.

type person struct {
name, superpower string
age int
}

timmy := &person{
name: «Timothy»,
age: 10,
}

type person struct {

Β Β Β Β name, superpower string

Β Β Β Β ageΒ Β Β Β Β Β Β Β Β Β Β Β Β Β int

}

Β 

timmy := &person{

Β Β Β Β name: «Timothy»,

Β Β Β Β age:Β Β 10,

}

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅Ρ‚ нСобходимости разымСнования структур для получСния доступа ΠΊ ΠΈΡ… полю. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ листинг ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½ для написания (*timmy).superpower.

timmy.superpower = «flying»
fmt.Printf(«%+v\n», timmy) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: &{name:Timothy superpower:flying age:10}

timmy.superpower = «flying»

fmt.Printf(«%+v\n», timmy) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: &{name:Timothy superpower:flying age:10}

Вопросы для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

1. КакиС случаи использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° адрСса дСйствСнны?

  • Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹: &"Timothy"
  • ЦСлочислСнныС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹: &10
  • ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹: &person{name: "Timothy"}
  • ВсС Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅

2. Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ timmy.superpower ΠΈ (*timmy).superpower?

ΠžΡ‚Π²Π΅Ρ‚Ρ‹

  1. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса дСйствитСлСн с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ, Π½ΠΎ Π½Π΅ со строковыми Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ числами;
  2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Go автоматичСски Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΎ timmy.superpower ΠΏΡ€ΠΎΡ‰Π΅ для чтСния, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.
  1. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса дСйствитСлСн с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ, Π½ΠΎ Π½Π΅ со строковыми Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ ΠΈΠ»ΠΈ числами;
  2. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ Π½Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Go автоматичСски Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΎ timmy.superpower ΠΏΡ€ΠΎΡ‰Π΅ для чтСния, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΎΠ½ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ массивы Π² Go

Как ΠΈ Π² случаС со структурами, ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ для массивов ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Ρ‹ прСфиксом Π² Π²ΠΈΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° адрСса (&) для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ указатСля Π½Π° массив. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ автоматичСскоС Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

superpowers := &[3]string{«flight», «invisibility», «super strength»}
fmt.Println(superpowers[0]) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: flight
fmt.Println(superpowers[1:2]) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: [invisibility]

superpowers := &[3]string{«flight», «invisibility», «super strength»}

fmt.Println(superpowers[0]) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: flight

fmt.Println(superpowers[1:2]) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: [invisibility]

Массив ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° автоматичСски разымСнуСтся Π²ΠΎ врСмя индСксирования ΠΈΠ»ΠΈ создания срСза. НСт нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΉ (*superpowers)[0].

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ языка Π‘, массивы ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² Go ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ нСзависимыми Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.

ΠšΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚Π½Ρ‹ΠΌ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌ для срСзов ΠΈ ΠΊΠ°Ρ€Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ прСфиксы с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ адрСса (&), ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚ΠΎΠ³Π΄Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСского разымСнования.

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

НазовитС Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ написания (*superpowers)[2:], Π³Π΄Π΅ superpowers являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° массив.

ΠžΡ‚Π²Π΅Ρ‚

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС написаниС superpowers[2:]Β  являСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, благодаря автоматичСскому Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π½ΠΈΡŽ массивов.

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС написаниС superpowers[2:]Β  являСтся Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅, благодаря автоматичСскому Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π½ΠΈΡŽ массивов.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Golang

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для возмоТности использования рСдактирования Ρ‡Π΅Ρ€Π΅Π· Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ всСгда ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Когда ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ пСрСдаСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, функция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ копию адрСса памяти. Π§Π΅Ρ€Π΅Π· Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ адрСса памяти функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π’ ЛистингС 9 функция birthday ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Ρ‚ΠΈΠΏΠ° *person. Π­Ρ‚ΠΎ позволяСт Ρ‚Π΅Π»Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. Как ΠΈ Π² ЛистингС 7, здСсь Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ p для получСния доступа ΠΊ полю age. Бинтаксис ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ листинга ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ (*p).age++.

type person struct {
name, superpower string
age int
}

func birthday(p *person) {
p.age++
}

type person struct {

Β Β Β Β name, superpower string

Β Β Β Β ageΒ Β Β Β Β Β Β Β Β Β Β Β Β Β int

}

Β 

func birthday(p *person) {

Β Β Β Β p.age++

}

Ѐункция birthday Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ указатСля ΠΊ person, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

rebecca := person{
name: «Rebecca»,
superpower: «imagination»,
age: 14,
}

birthday(&rebecca)

fmt.Printf(«%+v\n», rebecca) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {name:Rebecca superpower:imagination age:15}

rebecca := person{

Β Β Β Β name:Β Β Β Β Β Β  «Rebecca»,

Β Β Β Β superpower: «imagination»,

Β Β Β Β age:Β Β Β Β Β Β Β Β 14,

}

Β 

birthday(&rebecca)

Β 

fmt.Printf(«%+v\n», rebecca) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {name:Rebecca superpower:imagination age:15}

Вопросы для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

1. Какой ΠΊΠΎΠ΄ Π²Π΅Ρ€Π½Π΅Ρ‚ Timothy 11? ΠžΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ ΠΎΡ‚ Листинга 6.

  • birthday(&timmy)
  • birthday(timmy)
  • birthday(*timmy)

2. Бколько Π»Π΅Ρ‚ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π Π΅Π±Π΅ΠΊΠΊΠ΅, Ссли Π±Ρ‹ функция birthday(p person) Π½Π΅ использовала ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ?

ΠžΡ‚Π²Π΅Ρ‚Ρ‹

  1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ timmy ΡƒΠΆΠ΅ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, поэтому ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ birthday(timmy);
  2. Если Π±Ρ‹ birthday Π½Π΅ использовала ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎΠ³Π΄Π° Π Π΅Π±Π΅ΠΊΠΊΠ° навсСгда ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π±Ρ‹ 14-Π»Π΅Ρ‚Π½Π΅ΠΉ.
  1. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ timmy ΡƒΠΆΠ΅ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, поэтому ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ birthday(timmy);
  2. Если Π±Ρ‹ birthday Π½Π΅ использовала ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎΠ³Π΄Π° Π Π΅Π±Π΅ΠΊΠΊΠ° навсСгда ΠΎΡΡ‚Π°Π»Π°ΡΡŒ Π±Ρ‹ 14-Π»Π΅Ρ‚Π½Π΅ΠΉ.

ΠŸΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ указатСля Π² Golang

ΠŸΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠœΠ΅Ρ‚ΠΎΠ΄ birthday Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎ позволяСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ пСрсоны. Π”Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ birthday Π² ЛистингС 9.

type person struct {
name string
age int
}

func (p *person) birthday() {
p.age++
}

type person struct {

Β Β Β Β name string

Β Β Β Β ageΒ Β int

}

Β 

func (p *person) birthday() {

Β Β Β Β p.age++

}

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ листингС ΠΏΡ€ΠΈ объявлСнии указатСля ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° birthday возраст Π’Π΅Ρ€Ρ€ΠΈ увСличиваСтся.

terry := &person{
name: «Terry»,
age: 15,
}
terry.birthday()
fmt.Printf(«%+v\n», terry) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: &{name:Terry age:16}

terry := &person{

Β Β Β Β name: «Terry»,

Β Β Β Β age:Β Β 15,

}

terry.birthday()

fmt.Printf(«%+v\n», terry) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: &{name:Terry age:16}

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ, Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ листингС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Go автоматичСски опрСдСляСт адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (&) ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· пояснСниС с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, поэтому Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ (&nathan).birthday().

nathan := person{
name: «Nathan»,
age: 17,
}
nathan.birthday()
fmt.Printf(«%+v\n», nathan) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {name:Nathan age:18}

nathan := person{

Β Β Β Β name: «Nathan»,

Β Β Β Β age:Β Β 17,

}

nathan.birthday()

fmt.Printf(«%+v\n», nathan) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {name:Nathan age:18}

ВызываСтся с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ birthday, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Π² ЛистингС 11, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ указатСля β€” Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС age Π½Π΅ увСличится.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ рСгулярно ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ с указатСлями. Для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° birthday Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ смысл ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ person вмСсто создания Π½ΠΎΠ²ΠΎΠΉ пСрсоны. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ структуру стоит ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° прСдоставляСт ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° time. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚ΠΈΠΏΠ° time.Time Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ указатСля, прСдпочитая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ вмСсто этого Π½ΠΎΠ²ΠΎΠ΅ врСмя, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. Π’ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅, Π·Π°Π²Ρ‚Ρ€Π° β€” это Π½ΠΎΠ²ΠΎΠ΅ сСгодня.

const layout = «Mon, Jan 2, 2006″
day := time.Now()
tomorrow := day.Add(24 * time.Hour)
fmt.Println(day.Format(layout)) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Tue, Nov 10, 2009
fmt.Println(tomorrow.Format(layout)) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Wed, Nov 11, 2009

const layout = «Mon, Jan 2, 2006»

day := time.Now()

tomorrow := day.Add(24 * time.Hour)

fmt.Println(day.Format(layout)) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Tue, Nov 10, 2009

fmt.Println(tomorrow.Format(layout)) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: Wed, Nov 11, 2009

На Π·Π°ΠΌΠ΅Ρ‚ΠΊΡƒ: Π‘Ρ‚ΠΎΠΈΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Если Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΠ· для всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ‚ΠΈΠΏΠ°. Π’Π΅ΠΌΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ time.Time Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ указатСля?

ΠžΡ‚Π²Π΅Ρ‚

Код Π² ЛистингС 14 Π½Π΅ раскрываСт, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Add ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ указатСля, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² любом случаС нотация с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ выглядит Ρ‚Π°ΠΊ ΠΆΠ΅. Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚ΠΎΠΉ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ.

Код Π² ЛистингС 14 Π½Π΅ раскрываСт, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Add ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ указатСля, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² любом случаС нотация с Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ выглядит Ρ‚Π°ΠΊ ΠΆΠ΅. Π›ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚ΠΎΠΉ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ.

Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Golang

Π’ Go Π΅ΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡƒΠΆΠ½Ρ‹ для опрСдСлСния адрСса памяти поля Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры. Ѐункция levelUp Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ измСняСт структуру stats, ΠΈ поэтому нуТдаСтся Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅.

type stats struct {
level int
endurance, health int
}

func levelUp(s *stats) {
s.level++
s.endurance = 42 + (14 * s.level)
s.health = 5 * s.endurance
}

type stats struct {

Β Β Β Β levelΒ Β Β Β Β Β Β Β Β Β Β Β  int

Β Β Β Β endurance, health int

}

Β 

func levelUp(s *stats) {

Β Β Β Β s.level++

Β Β Β Β s.endurance = 42 + (14 * s.level)

Β Β Β Β s.health = 5 * s.endurance

}

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса Π² Go ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для указания Π½Π° ΠΏΠΎΠ»Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

type character struct {
name string
stats stats
}

player := character{name: «Matthias»}
levelUp(&player.stats)

fmt.Printf(«%+v\n», player.stats) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {level:1 endurance:56 health:280}

type character struct {

Β Β Β Β nameΒ Β string

Β Β Β Β stats stats

}

Β 

player := character{name: «Matthias»}

levelUp(&player.stats)

Β 

fmt.Printf(«%+v\n», player.stats) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {level:1 endurance:56 health:280}

Π£ Ρ‚ΠΈΠΏΠ° character Π½Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ структуры, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² случаС нСобходимости Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π·ΡΡ‚ΡŒ адрСс памяти любого поля. Код &player.stats прСдоставляСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ структуры.

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

Π§Ρ‚ΠΎ ΠΈΠ· сСбя прСдставляСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ?

ΠžΡ‚Π²Π΅Ρ‚

Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ‡Π΅Ρ€Π΅Π· использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° адрСса Π½Π°Π΄ ΠΏΠΎΠ»Π΅ΠΌ структуры Π²Ρ€ΠΎΠ΄Π΅ &player.stats.

Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠΎΠ»Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ структуры. Π­Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ‡Π΅Ρ€Π΅Π· использованиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° адрСса Π½Π°Π΄ ΠΏΠΎΠ»Π΅ΠΌ структуры Π²Ρ€ΠΎΠ΄Π΅ &player.stats.

ИзмСнСниС, ΠΈΠ»ΠΈ ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ массивов Π² Golang

Π₯отя ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСзы, Π° Π½Π΅ массивы, Π² случаях, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ Π½ΡƒΠΆΠ΄Ρ‹ ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… Π΄Π»ΠΈΠ½Ρƒ, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ массивы. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½ΡƒΡŽ доску. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ функциям ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ элСмСнты массива.

func reset(board *[8][8]rune) {
board[0][0] = ‘r’
// …
}

func main() {
var board [8][8]rune
reset(&board)

fmt.Printf(«%c», board[0][0]) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: r
}

func reset(board *[8][8]rune) {

Β Β Β Β board[0][0] = ‘r’

Β Β Β Β // …

}

Β 

func main() {

Β Β Β Β var board [8][8]rune

Β Β Β Β reset(&board)

Β 

Β Β Β Β fmt.Printf(«%c», board[0][0]) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: r

}

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

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:Β 

Когда Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° массив?

ΠžΡ‚Π²Π΅Ρ‚

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ для Π΄Π°Π½Π½Ρ‹Ρ… с фиксированными значСниями Π²Ρ€ΠΎΠ΄Π΅ ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½ΠΎΠΉ доски. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ функциям ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ массивы ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ допускаСт ΠΌΡƒΡ‚Π°Ρ†ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

ΠœΠ°ΡΡΠΈΠ²Ρ‹ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡƒΡ‚ для Π΄Π°Π½Π½Ρ‹Ρ… с фиксированными значСниями Π²Ρ€ΠΎΠ΄Π΅ ΡˆΠ°Ρ…ΠΌΠ°Ρ‚Π½ΠΎΠΉ доски. ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ функциям ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ массивы ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ допускаСт ΠΌΡƒΡ‚Π°Ρ†ΠΈΡŽ, ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

НС всС ΠΌΡƒΡ‚Π°Ρ†ΠΈΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°ΡŽΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ использования указатСля. Для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… встроСнных ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ Go нСявно задСйствуСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

ΠšΠ°Ρ€Ρ‚Ρ‹ Π² Ρ€ΠΎΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Go

Π’ ΡƒΡ€ΠΎΠΊΠ΅ ΠΏΡ€ΠΎ ΠΊΠ°Ρ€Ρ‚Ρ‹Β ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²ΠΎ врСмя присваивания ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠ°Ρ€Ρ‚Ρ‹ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ. ΠšΠ°Ρ€Ρ‚Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ скрытыми указатСлями, поэтому ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ являСтся лишним. НС Π΄Π΅Π»Π°ΠΉΡ‚Π΅ этого:

func demolish(planets *map[string]string) // Π›ΠΈΡˆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

func demolish(planets *map[string]string) // Π›ΠΈΡˆΠ½ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

Π­Ρ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, Ссли ΠΊΠ»ΡŽΡ‡ ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ€Ρ‚Ρ‹ являСтся Ρ‚ΠΈΠΏΠΎΠΌ указатСля, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ указания Π½Π° ΠΊΠ°Ρ€Ρ‚Ρƒ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ Ρ€Π΅Π΄ΠΊΠΎ.

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

ЯвляСтся Π»ΠΈ ΠΊΠ°Ρ€Ρ‚Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ?

ΠžΡ‚Π²Π΅Ρ‚

Π”Π°, хотя синтаксичСски ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями. НСвозмоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π”Π°, хотя синтаксичСски ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎ Ρ„Π°ΠΊΡ‚Ρƒ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ указатСлями. НСвозмоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π‘Ρ€Π΅Π·Ρ‹ Π² Go β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° массив

Π‘Ρ€Π΅Π·Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ своСобразными ΠΎΠΊΠ½Π°ΠΌΠΈ Π² массив. Для указания Π½Π° элСмСнт массива срСзы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

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

Π―Π²Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° срСз ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сам срСз: Π΄Π»ΠΈΠ½Ρƒ, Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ функция reclassify Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ срСза planets. Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (main) Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ измСнСния, Ссли reclassify Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

func reclassify(planets *[]string) {
*planets = (*planets)[0:8]
}

func main() {
planets := []string{
«Mercury», «Venus», «Earth», «Mars»,
«Jupiter», «Saturn», «Uranus», «Neptune»,
«Pluto»,
}
reclassify(&planets)

fmt.Println(planets) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: [Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune]
}

func reclassify(planets *[]string) {

Β Β Β Β *planets = (*planets)[0:8]

}

Β 

func main() {

Β Β Β Β planets := []string{

Β Β Β Β Β Β Β Β «Mercury», «Venus», «Earth», «Mars»,

Β Β Β Β Β Β Β Β «Jupiter», «Saturn», «Uranus», «Neptune»,

Β Β Β Β Β Β Β Β «Pluto»,

Β Β Β Β }

Β Β Β Β reclassify(&planets)

Β 

Β Β Β Β fmt.Println(planets) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: [Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune]

}

ВмСсто измСнСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ³ΠΎ срСза, ΠΊΠ°ΠΊ Π² ЛистингС 18, Π»ΡƒΡ‡ΡˆΠ΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ reclassify для возвращСния Π½ΠΎΠ²ΠΎΠ³ΠΎ срСза.

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

Для ΠΊΠ°ΠΊΠΈΠΌ Π΄Π²ΡƒΡ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… потрСбуСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² случаС, ΠΊΠΎΠ³Π΄Π° функциям ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅?

ΠžΡ‚Π²Π΅Ρ‚

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ массивы

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ массивы

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ интСрфСйсы Π² Golang

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ martian ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° martian ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ интСрфСйсу talker.

type talker interface {
talk() string
}

func shout(t talker) {
louder := strings.ToUpper(t.talk())
fmt.Println(louder)
}

type martian struct{}

func (m martian) talk() string {
return «nack nack»
}

func main() {
shout(martian{}) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: NACK NACK
shout(&martian{}) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: NACK NACK

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

type talker interface {

Β Β Β Β talk() string

}

Β 

func shout(t talker) {

Β Β Β Β louder := strings.ToUpper(t.talk())

Β Β Β Β fmt.Println(louder)

}

Β 

type martian struct{}

Β 

func (m martian) talk() string {

Β Β Β Β return «nack nack»

}

Β 

func main() {

Β Β Β Β shout(martian{}) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: NACK NACK

Β Β Β Β shout(&martian{}) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: NACK NACK

ВсС ΠΈΠ½Π°Ρ‡Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ указатСля, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π΄Π°Π»Π΅Π΅:

type laser int

func (l *laser) talk() string {
return strings.Repeat(«pew «, int(*l))
}

func main() {
pew := laser(2)
shout(&pew) Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: PEW PEW
}

type laser int

Β 

func (l *laser) talk() string {

Β Β Β Β return strings.Repeat(«pew «, int(*l))

}

Β 

func main() {

Β Β Β Β pew := laser(2)

Β Β Β Β shout(&pew) Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: PEW PEW

}

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ &pew ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΈΠΏΡƒ *laser, Ρ‡Ρ‚ΠΎ удовлСтворяСт интСрфСйсу talker, Ρ‡Ρ‚ΠΎ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ shout. Однако shout(pew) Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ laser Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π΅ удовлСтворяСт интСрфСйсу.

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

Когда ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ удовлСтворяСт интСрфСйсу?

ΠžΡ‚Π²Π΅Ρ‚

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ удовлСтворяСт всСм интСрфСйсам, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ Π½Π΅-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вСрсии Ρ‚ΠΈΠΏΠ°.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ удовлСтворяСт всСм интСрфСйсам, Ρ‡Ρ‚ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ Π½Π΅-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вСрсии Ρ‚ΠΈΠΏΠ°.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ использованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² Golang

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ слоТнСС ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ΄, Π³Π΄Π΅ значСния ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΈΠ· Ρ€Π°Π·Π½Ρ‹Ρ… мСст.

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

Вопрос для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π»ΡƒΡ‡ΡˆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ слишком часто?

ΠžΡ‚Π²Π΅Ρ‚

Код Π±Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ.

Код Π±Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

  • Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ хранят адрСса памяти;
  • ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ адрСса (&) прСдоставляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ адрСса ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ;
  • Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ (*) для получСния доступа ΠΈΠ»ΠΈ рСдактирования значСния, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚;
  • УказатСлями ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ со Π·Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ-прСфиксом. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, *int;
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для измСнСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ‡Π΅Ρ€Π΅Π· Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²;
  • Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ со структурами ΠΈ массивами;
  • ΠšΠ°Ρ€Ρ‚Ρ‹ ΠΈ срСзы нСявно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ;
  • Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° поля Π²Π½ΡƒΡ‚Ρ€ΠΈ структур Π±Π΅Π· объявлСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ;
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΠ³Π΄Π° Π² Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ смысл, Π½ΠΎ Π½Π΅ пСрСусСрдствуйтС.
Π˜Ρ‚ΠΎΠ³ΠΎΠ²ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с Ρ‡Π΅Ρ€Π΅ΠΏΠ°Ρ…ΠΎΠΉ, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²Π²Π΅Ρ€Ρ…, Π²Π½ΠΈΠ·, Π½Π°Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΎ. Π§Π΅Ρ€Π΅ΠΏΠ°Ρ…Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ (x, y) мСста, Π³Π΄Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния для пСрСдвиТСния Π²Π½ΠΈΠ· ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для увСличСния /ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Ѐункция main Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ написали, ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ мСстополоТСниС.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для манипулирования значСниями x ΠΈ y.

РСшСниС

package main

import «fmt»

type turtle struct {
x, y int
}

func (t *turtle) up() {
t.y—
}

func (t *turtle) down() {
t.y++
}

func (t *turtle) left() {
t.x—
}

func (t *turtle) right() {
t.x++
}

func main() {
var t turtle
t.up()
t.up()
t.left()
t.left()
fmt.Println(t) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {-2 -2}
t.down()
t.down()
t.right()
t.right()
fmt.Println(t) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {0 0}
}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

package main

Β 

import «fmt»

Β 

type turtle struct {

Β Β Β Β x, y int

}

Β 

func (t *turtle) up() {

Β Β Β Β t.y—

}

Β 

func (t *turtle) down() {

Β Β Β Β t.y++

}

Β 

func (t *turtle) left() {

Β Β Β Β t.x—

}

Β 

func (t *turtle) right() {

Β Β Β Β t.x++

}

Β 

func main() {

Β Β Β Β var t turtle

Β Β Β Β t.up()

Β Β Β Β t.up()

Β Β Β Β t.left()

Β Β Β Β t.left()

Β Β Β Β fmt.Println(t) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {-2 -2}

Β Β Β Β t.down()

Β Β Β Β t.down()

Β Β Β Β t.right()

Β Β Β Β t.right()

Β Β Β Β fmt.Println(t) // Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚: {0 0}

}

[crayon-611d4d4022108776421203/]

ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽ Π΄Π°Π½Π½Ρ‹ΠΉ сайт с Ρ†Π΅Π»ΡŒΡŽ распространСния ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большСго объСма ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° для языка программирования Go. Π’ IT с 2008 Π³ΠΎΠ΄Π°, с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΈΠ·ΡƒΡ‡Π°ΡŽ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠ΅ мСня Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. ΠŸΡ€ΠΎΡΠ²Π»ΡΡŽ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΉ интСрСс ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ ΠΈ Π°Π½Π°Π»ΠΈΠ·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

E-mail: [email protected]

ΠžΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅

ВСхничСский УнивСрситСт ΠœΠΎΠ»Π΄ΠΎΠ²Ρ‹ (utm.md), Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π’Π΅Ρ…Π½ΠΈΠΊΠΈ, Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈ ΠœΠΈΠΊΡ€ΠΎΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠΈ

  • 2014 β€” 2018 Universitatea TehnicΔƒ a Moldovei, ИВ-Π˜Π½ΠΆΠ΅Π½Π΅Ρ€. Π’Π΅ΠΌΠ° Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ «Автоматизация ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ ΠΊΡ€ΠΈΠΏΡ‚ΠΎΠ²Π°Π»ΡŽΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ тСхничСский Π°Π½Π°Π»ΠΈΠ·Β»
  • 2018 β€” 2020 Universitatea TehnicΔƒ a Moldovei, ΠœΠ°Π³ΠΈΡΡ‚Ρ€, ΠœΠ°Π³ΠΈΡΡ‚Π΅Ρ€ΡΠΊΠ°Ρ диссСртация Β«Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ° Π² кибСрпространствС ΠΏΠΎ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ Π»ΠΈΡ†Π°Β»

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² си ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

Π­ Ρ‚ΠΎ, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, самая слоТная ΠΈ самая ваТная Ρ‚Π΅ΠΌΠ° Π²ΠΎ всём курсС. Π‘Π΅Π· понимания ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ дальнСйшСС ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ си Π±ΡƒΠ΄Π΅Ρ‚ бСссмыслСнным. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ – ΠΎΡ‡Π΅Π½ΡŒ простая концСпция, ΠΎΡ‡Π΅Π½ΡŒ логичная, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰Π°Ρ внимания ΠΊ дСталям.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

Π£ ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ – это пСрСмСнная, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс области памяти. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠ°ΠΊ ΠΈ пСрСмСнная, ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ. Бинтаксис объявлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

НапримСр
float *a;
long long *b;
Π”Π²Π° основных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с указатСлями – это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ & взятия адрСса, ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * разымСнования. Рассмотрим простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

Рассмотрим ΠΊΠΎΠ΄ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π΅Ρ‰Ρ‘ Ρ€Π°Π·

Π‘Ρ‹Π»Π° объявлСна пСрСмСнная с ΠΈΠΌΠ΅Π½Π΅ΠΌ A. Она располагаСтся ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ адрСсу Π² памяти. По этому адрСсу хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 100.

Π‘ΠΎΠ·Π΄Π°Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° int.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная p Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ A. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ Π΄ΠΎ содСрТимого ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ A.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ содСрТимоС, пишСм

ПослС этого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ A Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти. НичСго слоТного.
Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Π‘ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ
4
4
8
4
НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° Π½ΠΈΡ… ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π”Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ, Ссли ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ хранят адрСса, Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ цСлочислСнного Ρ‚ΠΈΠΏΠ°. Π’Π°ΠΊ ΠΈ Π΅ΡΡ‚ΡŒ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ сам ΠΏΠΎ сСбС хранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° size_t (Π° Ρ‚Π°ΠΊΠΆΠ΅ ptrdiff_t), это Ρ‚ΠΈΠΏ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Π΄Ρ‘Ρ‚ сСбя ΠΊΠ°ΠΊ цСлочислСнный, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ зависит ΠΎΡ‚ разрядности систСмы. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Π½Π΅Ρ‚. Π—Π°Ρ‡Π΅ΠΌ Ρ‚ΠΎΠ³Π΄Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΈΠΏ?

АрифмСтика ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ

Π’ ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΈΠΏ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° опСрация разымСнования (получСния содСрТимого ΠΏΠΎ адрСсу). Если ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, сколько Π±Π°ΠΉΡ‚ Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ, начиная ΠΎΡ‚ этого адрСса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ всю ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.
Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Для ΠΈΡ… выполнСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€.
опСрация + N сдвигаСт ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²ΠΏΠ΅Ρ€Ρ‘Π΄ Π½Π° N*sizeof(Ρ‚ΠΈΠΏ) Π±Π°ΠΉΡ‚.
НапримСр, Ссли ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ int *p; Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс CC02, Ρ‚ΠΎ послС p += 10; ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ адрСс Π‘Π‘02 + sizeof(int)*10 = CC02 + 28 = CC2A (ВсС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅). ΠŸΡƒΡΡ‚ΡŒ ΠΌΡ‹ создали ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ массива. ПослС этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ «Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ» ΠΏΠΎ этому массиву, получая доступ Π΄ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов.

Π—Π°ΠΌΠ΅Ρ‚ΡŒΡ‚Π΅, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта массива

Массив, ΠΏΠΎ сути, сам являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, поэтому Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ &. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ

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

Если ΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Ρ€Π°Π²Π½Ρ‹, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти.

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

Π£ ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс области памяти. МоТно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ адрСс указатСля ΠΈ смоТСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π΅Π³ΠΎ содСрТимому. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ опрСдСляСтся ΠΊΠ°ΠΊ

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΈΡ‡Ρ‚ΠΎ Π½Π΅ ΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎ Π½Π°ΠΌ понадобится ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΌΠΈ массивами. А Π²ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²

Π’ Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс, ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΡΡ‚ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Π·ΡΡ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ»ΠΈ Ссли ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрСмСнная Ρ…Ρ€Π°Π½ΠΈΡ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ Ρ‚ΠΈΠΏ.

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° int Ρ€Π°Π²Π΅Π½ 4 Π±Π°ΠΉΡ‚Π°, Π° char 1 Π±Π°ΠΉΡ‚. Π—Π° счёт этого, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² адрСс ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ ΠΏΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ Π±Π°ΠΉΡ‚Π°ΠΌ числа ΠΈ вывСсти ΠΈΡ… содСрТимоС.

NULL pointer – Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

Π£ ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ мусор, ΠΊΠ°ΠΊ ΠΈ любая другая пСрСмСнная. Но Π² Ρ‚ΠΎ ΠΆΠ΅ врСмя, этот «ΠΌΡƒΡΠΎΡ€» Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π°Π»ΠΈΠ΄Π½Ρ‹ΠΌ адрСсом. ΠŸΡƒΡΡ‚ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Каким ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ ΠΎΠ½ ΠΈΠ»ΠΈ Π½Π΅Ρ‚? Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС Π½ΠΈΠΊΠ°ΠΊ. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±Ρ‹Π» Π²Π²Π΅Π΄Ρ‘Π½ макрос NULL Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ stdlib.
ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ указатСля, Ссли ΠΎΠ½ Π½Π΅ инициализируСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π²Π½Ρ‹ΠΌ NULL.

По стандарту Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π² этом случаС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ€Π°Π²Π΅Π½ NULL, ΠΈ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ, ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован ΠΊΠ°ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false. Π₯отя Π² зависимости ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ NULL ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π½Ρ‹ΠΌ 0 (Π² смыслС, Π½Π΅ Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ Π² ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΌ прСдставлСнии, ΠΊΠ°ΠΊ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, int ΠΈΠ»ΠΈ float).
Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС

Π²ΠΏΠΎΠ»Π½Π΅ коррСктная опСрация, Π° Π² случаС

ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с Π½ΡƒΠ»Ρ‘ΠΌ, ΠΈΠ»ΠΈ с NULL, Π½ΠΎ нСльзя NULL ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΠ° с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ нСсколько ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Ρ‹ с указатСлями
1. ΠŸΡ€ΠΎΠΉΠ΄Ρ‘ΠΌ ΠΏΠΎ массиву ΠΈ Π½Π°ΠΉΠ΄Ρ‘ΠΌ всС Ρ‡Ρ‘Ρ‚Π½Ρ‹Π΅ элСмСнты.

2. Когда ΠΌΡ‹ сортируСм элСмСнты часто приходится ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ мСста, Ρ‚ΠΎ опСрация ΠΎΠ±ΠΌΠ΅Π½Π° мСстами Π΄Π²ΡƒΡ… элСмСнтов Π±ΡƒΠ΄Π΅Ρ‚ дорогостоящСй. ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ массив ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° исходныС элСмСнты ΠΈ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ мСньшС, Ρ‡Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ элСмСнтов Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ массива, Ρ‚ΠΎ ΠΈ сортировка Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ быстрСС. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, массив Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½, часто это Π²Π°ΠΆΠ½ΠΎ.

3. Π‘ΠΎΠ»Π΅Π΅ интСрСсный ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ‚ΠΈΠΏΠ° char всСгда Ρ€Π°Π²Π΅Π½ 1 Π±Π°ΠΉΡ‚, Ρ‚ΠΎ с Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ swap – ΠΎΠ±ΠΌΠ΅Π½Π° мСстами содСрТимого Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… a ΠΈ b Π½Π° double ΠΈΠ»ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ (с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π·ΠΎΠ²Π° sizeof), всё Ρ€Π°Π²Π½ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒ мСстами Π±Π°ΠΉΡ‚Ρ‹ Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

4. Найдём Π΄Π»ΠΈΠ½Ρƒ строки, Π²Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ тСсно связано с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Как Π²Ρ‹ догадались с названия ΡƒΡ€ΠΎΠΊΠ°, это β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

АдрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² C++

Поголовно Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ имССтся свой ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ адрСс. АдрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ β€” это ΠΏΡƒΡ‚ΡŒ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ находится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Он записываСтся Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Π’Π°ΠΊ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠ°ΠΊ Π² Ρ‚Π°ΠΊΠΎΠΉ адрСс 0x155, Ρ‚Π°ΠΊ ΠΈ Π² Ρ‚Π°ΠΊΠΎΠΉ 0x212 .

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ аналогию с ΠΊΡ€ΡƒΠΈΠ·Π½Ρ‹ΠΌ Π»Π°ΠΉΠ½Π΅Ρ€ΠΎΠΌ. Π’ Π½Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΈ Π² ΠΎΡ‚Π΅Π»Π΅, ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ Π½ΠΎΠΌΠ΅Ρ€Π°. Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΊΡƒΠΏΠΊΠ΅ Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ β€” 0x155 (Π΄Π°, ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π² ΠΎΠ΄Π½ΠΎΠΌ Π»Π°ΠΉΠ½Π΅Ρ€Π΅ ΠΈΠ»ΠΈ ΠΎΡ‚Π΅Π»Π΅ Π½Π΅ станут Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€Π° Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ всС Ρ‚Π°ΠΊΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отвлСчСмся). А Π΄Ρ€ΡƒΠ³ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² Π½ΠΎΠΌΠ΅Ρ€Π΅ 0x212 β€” Ρ‚Π°ΠΊ ΠΈ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ. И Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сам ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΏΡ€ΠΈ создании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π½Π°Π΅Ρ‚, Π³Π΄Π΅ ΠΎΠ½Π° находится.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ создаСтС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΏΠΎ Π΅Ρ‘ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡŽ автоматичСски ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π½Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽβ€‹ ΠΏΠ°ΠΌΡΡ‚ΡŒ вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ удалСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’ ΠΈΠ³Ρ€Π°Ρ… присутствуСт Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ спСцэффСкты. НапримСр, Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π΄Ρ‹ΠΌ. ВсС это β€” пСрСмСнная (ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΎΠ΄Π½Π°!), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ придётся ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒΡΡ навсСгда. А Π²ΠΎΡ‚, Ссли Π±Ρ‹ ΠΎΠ½Π° Π½Π΅ ΡƒΠ΄Π°Π»ΠΈΠ»Π°ΡΡŒ, Ρ‚ΠΎ ΠΎΠ½Π° Π±Ρ‹ своСй Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠΆΠΊΡƒ Π½Π°Π³Ρ€ΡƒΠΆΠ°Π»Π° Π±Ρ‹ наш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² C/C++ присутствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ, Ссли Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ситуация, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Ρ‘ вовсС Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ участкС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΠ³Π΄Π° это, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½ΡƒΠΆΠ½ΠΎ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² C++

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ β€” это с самого Π½Π°Ρ‡Π°Π»Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΡƒΠΆΠ΅ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хранится адрСс Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ указатСлями, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:

  • * β€” ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ адрСсу (ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΡ‚ΠΎ ΠΆΠΈΠ²Π΅Ρ‚ Π² этом Π½ΠΎΠΌΠ΅Ρ€Π΅). Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ * , Ρ‚ΠΎ Π²Ρ‹ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ указатСля.
  • & β€” ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡƒ адрСсу ΠΏΡ€ΠΎΠΆΠΈΠ²Π°Π΅Ρ‚ этот Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ).

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² C++

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ x Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅,
  • a Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ 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) ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

  1. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° считаСт адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a ΠΈ пСрСдаст ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ AddFive.
  2. АргумСнты Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС адрСс) Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π½Π° стСкС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (это Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…).
  3. Π’ΠΎ врСмя выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ взяты со стСка ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹.
  4. ПослС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ стСк Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡ΠΈΡ‰Π΅Π½.

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

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ указатСля ΠΏΠΎ Merriam-Webster

Ρ‚ΠΎΡ‡ΠΊΠ° Β· эр

| \ ˈPΘ―in-tΙ™r

\

1Π°
Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π²ΠΎ мноТСствСнном числС

: Π΄Π²Π΅ Π·Π²Π΅Π·Π΄Ρ‹ Π² Π‘ΠΎΠ»ΡŒΡˆΠΎΠΉ ΠœΠ΅Π΄Π²Π΅Π΄ΠΈΡ†Π΅, линия, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠŸΠΎΠ»ΡΡ€Π½Π°Ρ Π·Π²Π΅Π·Π΄Π°.

Π±

: ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚

особСнно

: ΡΡ‚Π΅Ρ€ΠΆΠ΅Π½ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для привлСчСния внимания

c

: адрСс памяти ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π΄Ρ€ΡƒΠ³ΠΎΠΉ адрСс (Π² зависимости ΠΎΡ‚ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…)

2

: Π»ΡŽΠ±Ρ‹Π΅ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ…, ΡΠΈΠ»ΡŒΠ½Ρ‹Ρ…, стройных ΠΏΠΎΠ΄Ρ€ΡƒΠΆΠ΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ охотятся ΠΏΠΎ Π·Π°ΠΏΠ°Ρ…Ρƒ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π½Π° присутствиС Π΄ΠΈΡ‡ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ (см. ΠŸΡƒΠ½ΠΊΡ‚ 2, смысл 4b).

ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ

: любая английская ΠΏΠΎΡ€ΠΎΠ΄Π° ΠΏΠΎΠ΄Π²ΠΈΠΆΠ½Ρ‹Ρ…, мускулистых собак с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ Π³Π»Π°Π΄ΠΊΠΎΠΉ ΡˆΠ΅Ρ€ΡΡ‚ΡŒΡŽ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Π΅Π»ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° с пятнами ΠΏΠ΅Ρ‡Π΅Π½ΠΈ, Π±Π»Π΅Π΄Π½ΠΎ-ΠΆΠ΅Π»Ρ‚ΠΎΠΉ, Ρ‡Π΅Ρ€Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΡ€Π°Π½ΠΆΠ΅Π²ΠΎΠΉ, ΠΈ ΡƒΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ ΡΡƒΠΆΠ°ΡŽΡ‰ΠΈΠΌΡΡ хвостом — см. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΈΠΉ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΡˆΠ΅Ρ€ΡΡ‚Π½Ρ‹ΠΉ ΠΏΠΎΠΉΠ½Ρ‚Π΅Ρ€, Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΈΠΉ ΠΆΠ΅ΡΡ‚ΠΊΠΎΡˆΠ΅Ρ€ΡΡ‚Π½Ρ‹ΠΉ. ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ

3

: Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ снабТаСт Π±Π°Π»Π»Π°ΠΌΠΈ

4

: ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ подсказка : подсказка

БСстры-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ | ОсобСнноС РоТдСство

БСстры ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Π½Π°Ρ‡Π°Π»ΠΈ своС Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π²ΠΎΠΊΠ°Π»Ρƒ Π² Ρ†Π΅Ρ€ΠΊΠ²ΠΈ своСго ΠΎΡ‚Ρ†Π°, Π¦Π΅Ρ€ΠΊΠ²ΠΈ Π‘ΠΎΠ³Π° Π² Π—Π°ΠΏΠ°Π΄Π½ΠΎΠΌ ОклСндС, ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΡ.Они добились всСмирной извСстности ΠΈ заняли мСсто Π² истории ΠΏΠΎΠΏ-ΠΌΡƒΠ·Ρ‹ΠΊΠΈ ΠΊΠ°ΠΊ динамичная ТСнская Π³Ρ€ΡƒΠΏΠΏΠ°! Π˜Ρ… ΠΏΠ΅Ρ€Π²ΠΎΠ΅ выступлСниС Π² Лос-АндТСлСсС Π² ΠΊΠ»ΡƒΠ±Π΅ Troubadour Π±Ρ‹Π»ΠΎ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ°ΠΌΠΈ Π·Π° Π΅Π³ΠΎ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΈ Π½Π°Π·Π²Π°Π»ΠΎ The Pointer Sisters «самым Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ событиСм Π² ΡˆΠΎΡƒ-бизнСсС Π·Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π³ΠΎΠ΄Ρ‹Β». Π˜Ρ… Π΄Π΅Π±ΡŽΡ‚Π½Ρ‹ΠΉ альбом 1973 Π³ΠΎΠ΄Π° Π΄Π°Π» Π½Π°ΠΌ синглы «Yes We Can, Can», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ заняли 11 мСсто Π² ΠΏΠΎΠΏ-Ρ‡Π°Ρ€Ρ‚Π΅ синглов ΠΆΡƒΡ€Π½Π°Π»Π° Billboard .

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π³ΠΎΠ΄Ρƒ сСстры выпустили альбом Β« It’s A Plenty Β», Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вошСл настоящий ΠΊΠ°Π½Ρ‚Ρ€ΠΈ-вСстСрн Β«FairytaleΒ», написанный сСстрами.Π‘ΠΈΠ½Π³Π» стал Ρ…ΠΈΡ‚ΠΎΠΌ ΠΊΠ°ΠΊ Π² ΠΊΠ°Π½Ρ‚Ρ€ΠΈ, Ρ‚Π°ΠΊ ΠΈ Π² ΠΏΠΎΠΏ-Ρ‡Π°Ρ€Ρ‚Π°Ρ…. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ сСстры стали ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‡Π΅Ρ€Π½ΠΎΠΉ ТСнской Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ, которая ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ выступала Π½Π° Grand Ole Opry Π² НэшвиллС, ΡˆΡ‚Π°Ρ‚ ВСннСсси. Они Ρ‚Π°ΠΊΠΆΠ΅ стали ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ соврСмСнниками, Π²Ρ‹ΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΠΌΠΈ Π² ΠΎΠΏΠ΅Ρ€Π½ΠΎΠΌ Ρ‚Π΅Π°Ρ‚Ρ€Π΅ Π‘Π°Π½-Ѐранциско , ΠΈ выпустили ΠΆΠΈΠ²ΡƒΡŽ запись выступлСния. Π’ 1975 Π³ΠΎΠ΄Ρƒ «Fairytale» Π²Ρ‹ΠΈΠ³Ρ€Π°Π»Π° ΠΈΡ… ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€Π΅ΠΌΠΈΡŽ «Π“рэмми» Π·Π° Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΊΠ°Π½Ρ‚Ρ€ΠΈ-исполнСниС дуэтом ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ, Π° Элвис ΠŸΡ€Π΅ΡΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ исполнил эту мСлодию. Π’ Ρ‚ΠΎΠΌ ΠΆΠ΅ Π³ΠΎΠ΄Ρƒ Pointers выпустили свой Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ альбом Π·Π° Blue Thumb .Π—Π°ΠΏΠΈΡΡŒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Steppin ‘ Π²ΠΊΠ»ΡŽΡ‡Π°Π»Π° «How Long (Betcha Got A Chick On The Side)»; Написанный Π² соавторствС с сСстрами, ΠΎΠ½ вошСл Π² Ρ‚ΠΎΠΏ-20 Π² ΠΏΠΎΠΏ-Ρ‡Π°Ρ€Ρ‚Π°Ρ… ΠΈ ​​занял ΠΏΠ΅Ρ€Π²ΠΎΠ΅ мСсто Π² R&B. Π’ 1976 Π³ΠΎΠ΄Ρƒ сСстры Π²Ρ‹ΡˆΠ»ΠΈ Π½Π° большой экран, ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ²ΡˆΠΈΡΡŒ ΠΊ Π ΠΈΡ‡Π°Ρ€Π΄Ρƒ ΠŸΡ€Π°ΠΉΠΎΡ€Ρƒ Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅ Β« Автомойка Β». «You Gotta Believe», вошСдшая Π² саундтрСк ΠΊ Ρ„ΠΈΠ»ΡŒΠΌΡƒ, поднялась Π² Ρ…ΠΈΡ‚-ΠΏΠ°Ρ€Π°Π΄Π°Ρ… R&B. Π’ 1977 Π³ΠΎΠ΄Ρƒ Pointer Sisters выпустили Have a Party , послСдний альбом для Blue Thumb ΠΈ послСдний альбом ΠΊΠ²Π°Ρ€Ρ‚Π΅Ρ‚Π°.

ИзмСнив свой ΡΡ‚ΠΈΠ»ΡŒ, сСстры подписали ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ с Planet Records ΠΈ объСдинились с Π ΠΈΡ‡Π°Ρ€Π΄ΠΎΠΌ ΠŸΠ΅Ρ€Ρ€ΠΈ, извСстным ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€ΠΎΠΌ, Ρ€Π°Π½Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΌ с Ρ‚Π°ΠΊΠΈΠΌΠΈ артистами, ΠΊΠ°ΠΊ Π‘Π°Ρ€Π±Π°Ρ€Π° Π‘Ρ‚Ρ€Π΅ΠΉΠ·Π°Π½Π΄ ΠΈ ΠšΠ°Ρ€Π»ΠΈ Π‘Π°ΠΉΠΌΠΎΠ½. ВмСстС ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ€ΠΎΠΊ-Π½-Ρ€ΠΎΠ»Π»ΡŒΠ½Ρ‹ΠΉ альбом. Π”Π΅Π±ΡŽΡ‚Π½Ρ‹ΠΉ сингл Π³Ρ€ΡƒΠΏΠΏΡ‹, «Fire» Π‘Ρ€ΡŽΡΠ° Бпрингстина, занял Π²Ρ‚ΠΎΡ€ΠΎΠ΅ мСсто Π² ΠΏΠΎΠΏ-Ρ‡Π°Ρ€Ρ‚Π°Ρ… ΠΈ ​​стал Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ. Альбом Energy , усилСнный «Fire», ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ сСртификат ΠΈ стал Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ Ρ‚ΠΎΠΏ-синглом «Happiness».

Π’ 1980 Π³ΠΎΠ΄Ρƒ Π³Ρ€ΡƒΠΏΠΏΠ° выпустила Special Things с Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ сСртификатом; Π½Π° Π½Π΅ΠΌ Π±Ρ‹Π»Π° пСсня «He’s So Shy», которая заняла 3-Π΅ мСсто ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΉ статус. Π’ 1981 Π³ΠΎΠ΄Ρƒ Π³Ρ€ΡƒΠΏΠΏΠ° выпустила Black & White , Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вошСл ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ…ΠΈΡ‚ΠΎΠ² Π³ΠΎΠ΄Π° Β«Slow HandΒ». Π‘ΠΈΠ½Π³Π» занял 2-Π΅ мСсто Π² Ρ‡Π°Ρ€Ρ‚Π΅ Billboard ΠΈ стал Π³ΠΈΠΌΠ½ΠΎΠΌ для ΠΆΠ΅Π½Ρ‰ΠΈΠ½ ΠΏΠΎ всСй странС.

Π£Π²Ρ‹, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΡ… альбома 1983 Π³ΠΎΠ΄Π° Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π»ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€ΠΈΠΎ ΡΠΎΠ±ΠΈΡ€Π°Π»ΠΎΡΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ: Break Out .ПослС Π΅Π³ΠΎ выпуска Stereo Review Π½Π°Π·Π²Π°Π» Π½ΠΎΠ²Ρ‹ΠΉ альбом «Бёстры-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² ΠΈΡ… самом Π΄Π΅Ρ€Π·ΠΊΠΎΠΌ, Π΄Π΅Ρ€Π·ΠΊΠΎΠΌ ΠΈ быстром Ρ‚Π΅ΠΌΠΏΠ΅Β». Когда Π ΡƒΡ‚ взяла Π½Π° сСбя Π²Π΅Π΄ΡƒΡ‰ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π² «Automatic», Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ Π²ΠΎΠΊΠ°Π» практичСски соскочил с Π²ΠΈΠ½ΠΈΠ»Π° ΠΈ ΠΏΠΎΠΌΠΎΠ³ синглу ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒΡΡ Π½Π° ΠΏΡΡ‚ΡƒΡŽ строчку. Pointer Sisters ΠΏΡ€ΠΈΠ·Π΅ΠΌΠ»ΠΈΠ»ΠΈΡΡŒ Π½Π° всСх MTV , став ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… Ρ‡Π΅Ρ€Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ, ΠΈΠ³Ρ€Π°ΡŽΡ‰ΠΈΡ… Π² тяТСлой Ρ€ΠΎΡ‚Π°Ρ†ΠΈΠΈ. «Jump (for my love)» занял 3-Π΅ мСсто Π² ΠΏΠΎΠΏ-Ρ‡Π°Ρ€Ρ‚Π°Ρ…. «I’m So Excited» ΠΏΠΎΠΏΠ°Π» Π² дСсятку Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΈ стал классикой Pointer! На сСгодняшний дСнь пСсня сыграна Π±ΠΎΠ»Π΅Π΅ 2-Ρ….5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Ρ€Π°Π· ΠΏΠΎ Ρ€Π°Π΄ΠΈΠΎ. «Neutron Dance», Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠΏΠΈΡ‚Π°Π½Π½Ρ‹Π΅ госпСлом возгласы Π ΡƒΡ‚, поднялся Π½Π° 6 строчку Π² ΠΏΠΎΠΏ-Ρ‡Π°Ρ€Ρ‚Π°Ρ…, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π³ΠΎ Π²ΠΈΠ΄Π΅ΠΎ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ Π½Π° MTV . Paramount Pictures Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΠΈ Π² свой Ρ„ΠΈΠ»ΡŒΠΌ Ρ…ΠΈΡ‚ Β« ΠŸΠΎΠ»ΠΈΡ†Π΅ΠΉΡΠΊΠΈΠΉ ΠΈΠ· Π‘Π΅Π²Π΅Ρ€Π»ΠΈ-Π₯ΠΈΠ»Π»Π· Β» с Π­Π΄Π΄ΠΈ ΠœΠ΅Ρ€Ρ„ΠΈ Π² Π³Π»Π°Π²Π½ΠΎΠΉ Ρ€ΠΎΠ»ΠΈ. НаконСц, Break Out ΠΏΠΎΡ€ΠΎΠ΄ΠΈΠ»ΠΈ ΡˆΠ΅ΡΡ‚ΠΎΠΉ сингл «Baby Come And Get It». УспСх альбома принСс сСстрам Π΄Π²Π΅ ΠΏΡ€Π΅ΠΌΠΈΠΈ «Грэмми» (Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²ΠΎΠΊΠ°Π» дуэта ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π² пСснС Β«JumpΒ» ΠΈ Π»ΡƒΡ‡ΡˆΠ°Ρ вокальная Π°Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²ΠΊΠ° для пСсни Β«AutomaticΒ») ΠΈ Π΄Π²Π΅ ΠΏΡ€Π΅ΠΌΠΈΠΈ American Music Awards. Break Out Π±Ρ‹Π» сСртифицирован Ρ‚Ρ€ΠΈΠΆΠ΄Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΠ½ΠΎΠ²Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ сдСлало Π΅Π³ΠΎ самым ΠΏΡ€ΠΎΠ΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ альбомом Π·Π° всю ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ Pointer Sisters.

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ гастролировали ΠΈ Π½Π΅ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ появлялись Π½Π° Ρ‚Π΅Π»Π΅Π²ΠΈΠ΄Π΅Π½ΠΈΠΈ, Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠ΅Ρ€Π΅ΡˆΠ»Π° Π½Π° RCA Records, Π³Π΄Π΅ Π² 1985 Π³ΠΎΠ΄Ρƒ выпустила альбом Contact . ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ сингл Β«Dare MeΒ» стал Ρ…ΠΈΡ‚ΠΎΠΌ β„–11 ΠΈ сопровоТдался Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΡ‚ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Π²ΠΈΠ΄Π΅ΠΎ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сдСлало сСстСр ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ законодатСлями ΠΌΠΎΠ΄ для Π½ΠΎΠ²ΠΎΠ³ΠΎ поколСния. Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ… нСдСль послС выпуска альбом Contact стал ΠΏΠ»Π°Ρ‚ΠΈΠ½ΠΎΠ²Ρ‹ΠΌ, ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»Π° Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π½Π°Π³Ρ€Π°Π΄Ρƒ American Music Award Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Β«Π›ΡƒΡ‡ΡˆΠ°Ρ Π²ΠΈΠ΄Π΅ΠΎΠ³Ρ€ΡƒΠΏΠΏΠ°Β».

Π’ ΠΊΠΎΠ½Ρ†Π΅ 1986 Π³ΠΎΠ΄Π° Pointer Sisters выпустили свой Π²Ρ‚ΠΎΡ€ΠΎΠΉ альбом Π½Π° RCA , Hot Together , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вошСл Π² Ρ‚ΠΎΠΏ-40 Ρ…ΠΈΡ‚ΠΎΠ² с «Goldmine». The Pointers ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ альбом Π² 1987 Π³ΠΎΠ΄Ρƒ, ΠΏΠΎΠΏΠ°Π² Π² ΠΏΡ€Π°ΠΉΠΌ-Ρ‚Π°ΠΉΠΌ со своим ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ тСлСтранслятором Up All Night , Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сСстры гастролировали ΠΏΠΎ Π½ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠ»ΡƒΠ±Π°ΠΌ Лос-АндТСлСса с ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½Π½Ρ‹ΠΌΠΈ Π·Π²Π΅Π·Π΄Π°ΠΌΠΈ Π’ΡƒΠΏΠΈ Π“ΠΎΠ»Π΄Π±Π΅Ρ€Π³, Π‘Ρ€ΡŽΡΠΎΠΌ Уиллисом ΠΈ сСстрами ΠœΠ°ΠΊΠ³ΡƒΠ°ΠΉΡ€.

1993 Π³ΠΎΠ΄ ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π» 20-Π»Π΅Ρ‚ΠΈΠ΅ Pointer Sisters Π² индустрии звукозаписи, ΠΈ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π·Π΄Π½ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΠ΄ΠΎΠ²Ρ‰ΠΈΠ½Ρƒ выпуском Π½ΠΎΠ²ΠΎΠ³ΠΎ альбома ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Only Sisters Can Do That Π½Π° SBK Records.ВсС Ρ‚Ρ€ΠΈ сСстры написали ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» для альбома. Поклонники ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΈ Ρ…Π²Π°Π»ΠΈΠ»ΠΈ пластинку — Entertainment Weekly , Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π°Π·Π²Π°Π»ΠΈ альбом Β«Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΡΡ, чСм… Π”ΠΆΠ°Π½Π΅Ρ‚ ДТСксон» ΠΈ провозгласили Π΅Π³ΠΎ «самым Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌΡΡ сСриалом« БСстры »со Π²Ρ€Π΅ΠΌΠ΅Π½ Ρ…ΠΈΡ‚ΠΎΠ² Break Out 1984 Π³ΠΎΠ΄Π°Β».

Π’ 1994 Π³ΠΎΠ΄Ρƒ ΠΆΠ΅Π½Ρ‰ΠΈΠ½Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π·Π²Π΅Π·Π΄Ρ‹ Π½Π° Голливудской АллСС славы , мСроприятии, ΠΏΡ€ΠΎΠ²ΠΎΠ·Π³Π»Π°ΡˆΠ΅Π½Π½ΠΎΠΌ Π² Π“ΠΎΠ»Π»ΠΈΠ²ΡƒΠ΄Π΅ Β«Π”Π½Π΅ΠΌ сСстСр-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΈΡ†Β». Π’ Ρ‚ΠΎΡ‚ ΠΆΠ΅ дСнь Π±Ρ‹Π»ΠΎ объявлСно, Ρ‡Ρ‚ΠΎ Π³Ρ€ΡƒΠΏΠΏΠ° Π½Π°Ρ‡Π½Π΅Ρ‚ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠ΅ Ρ‚ΡƒΡ€Π½Π΅ ΠΏΠΎ ΠΌΡŽΠ·ΠΈΠΊΠ»Ρƒ Ѐэтса Π£ΠΎΠ»Π»Π΅Ρ€Π° Β« Ain’t Misbehavin ‘Β».Они гастролировали с ΡˆΠΎΡƒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 46 нСдСль ΠΈ записали альбом Π°ΠΊΡ‚Π΅Ρ€ΠΎΠ². БСстры Π±Ρ‹Π»ΠΈ удостоСны Π½Π°Π³Ρ€Π°Π΄Ρ‹ Soul of American Music Awards , Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² Π—Π°Π» славы Soul Train . Они Π΄Π°Π»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ†Π΅Ρ€Ρ‚ Π² Π‘Π΅Π»ΠΎΠΌ Π΄ΠΎΠΌΠ΅ для Ρ‚ΠΎΠ³Π΄Π°ΡˆΠ½Π΅Π³ΠΎ ΠΏΡ€Π΅Π·ΠΈΠ΄Π΅Π½Ρ‚Π° ΠšΠ»ΠΈΠ½Ρ‚ΠΎΠ½Π°. Π’ 1996 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈΠ· Π»Π΅Π³Π΅Π½Π΄Π°Ρ€Π½Ρ‹Ρ… артистов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ выступили Π½Π° Ρ†Π΅Ρ€Π΅ΠΌΠΎΠ½ΠΈΠΈ закрытия ΠžΠ»ΠΈΠΌΠΏΠΈΠΉΡΠΊΠΈΡ… ΠΈΠ³Ρ€ Π² АтлантС, ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ° Π±Ρ‹Π»Π° ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Fire — The Very Best of the Pointer Sisters , Π°Π½Ρ‚ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΠΈΠ· 36 пСсСн, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±Ρ‹Π»Π° записана Ρ…Ρ€ΠΎΠ½ΠΈΠΊΠ°. ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π° сСстСр.Π’ послСдниС Π³ΠΎΠ΄Ρ‹ Π³Ρ€ΡƒΠΏΠΏΠ° выступала с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ· Π²Π΅Π»ΠΈΡ‡Π°ΠΉΡˆΠΈΡ… симфоничСских оркСстров ΠΌΠΈΡ€Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π‘Π°Π½-Ѐранциско, ДТСксонвилл, симфоничСский оркСстр Атланты ΠΈ извСстный Boston Pops. Pointer Sisters стали настоящим Ρ…ΠΈΡ‚ΠΎΠΌ Π½Π° Night of the Proms , Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 50 Π°Π½ΡˆΠ»Π°Π³ΠΎΠ²Ρ‹Ρ… выступлСний ΠΏΠΎ Π“Π΅Ρ€ΠΌΠ°Π½ΠΈΠΈ, Π“ΠΎΠ»Π»Π°Π½Π΄ΠΈΠΈ ΠΈ Π‘Π΅Π»ΡŒΠ³ΠΈΠΈ, Ρ‡Ρ‚ΠΎ обСспСчило Π³Ρ€ΡƒΠΏΠΏΠ΅ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹Ρ… Ρ‚ΡƒΡ€ΠΎΠ² ΠΏΠΎ Π•Π²Ρ€ΠΎΠΏΠ΅. Π’ 2004 Π³ΠΎΠ΄Ρƒ Π³Ρ€ΡƒΠΏΠΏΠ° записала ΠΊΠΎΠ½Ρ†Π΅Ρ€Ρ‚Π½Ρ‹ΠΉ CD / DVD, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½Ρ‹ энСргичныС ΠΏΠΎΠΉΠ½Ρ‚Π΅Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ…ΠΈΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ Ρ„Π°Π½Π°Ρ‚Π°ΠΌ всСх возрастов!

Π ΡƒΡ‚, Анита ΠΈ Π‘Π°Π΄Π°ΠΊΠΎ ΠΏΠ»ΠΎΡ‚Π½ΠΎ Π³Π°ΡΡ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΌΡƒΠ·Ρ‹ΠΊΡƒ The Pointer Sisters ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ.

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ сайт: БСстры ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€

ИспользованиС клавиш ΠΌΡ‹ΡˆΠΈ для пСрСмСщСния указатСля ΠΌΡ‹ΡˆΠΈ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиш ΠΌΡ‹ΡˆΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅ вмСсто ΠΌΡ‹ΡˆΠΈ для пСрСмСщСния указатСля.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ клавиш ΠΌΡ‹ΡˆΠΈ

  1. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π¦Π΅Π½Ρ‚Ρ€ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠŸΡƒΡΠΊ , Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ПанСль управлСния , Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ возмоТности , Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π¦Π΅Π½Ρ‚Ρ€ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй .

  2. Click УпроститС использованиС ΠΌΡ‹ΡˆΠΈ .

  3. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ УправляйтС ΠΌΡ‹ΡˆΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ , установитС Ρ„Π»Π°ΠΆΠΎΠΊ Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ клавиши ΠΌΡ‹ΡˆΠΈ .

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ указатСля с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиш ΠΌΡ‹ΡˆΠΈ

ПослС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ клавиш ΠΌΡ‹ΡˆΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ для пСрСмСщСния ΠΌΡ‹ΡˆΠΈ.

Для пСрСмСщСния указатСля ΠΌΡ‹ΡˆΠΈ

ΠŸΡ€Π΅ΡΡ

Π’Π²Π΅Ρ€Ρ… ΠΈ Π²Π»Π΅Π²ΠΎ

7

Π’Π²Π΅Ρ€Ρ…

8

Π’Π²Π΅Ρ€Ρ… ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ

9

слСва

4

ΠŸΡ€Π°Π²Ρ‹ΠΉ

6

Π’Π½ΠΈΠ· ΠΈ Π²Π»Π΅Π²ΠΎ

1

Π’Π½ΠΈΠ·

2

Π’Π½ΠΈΠ· ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ

3

Π’Ρ‹Π±ΠΎΡ€ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ клавиши ΠΌΡ‹ΡˆΠΈ для Ρ‰Π΅Π»Ρ‡ΠΊΠ° ΠΏΠΎ элСмСнтам Π½Π° экранС, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ сначала Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, какая ΠΊΠ½ΠΎΠΏΠΊΠ° ΠΌΡ‹ΡˆΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ: лСвая ΠΊΠ½ΠΎΠΏΠΊΠ°, правая ΠΈΠ»ΠΈ ΠΎΠ±Π΅.

Π‘

ΠΏΠΎ

ΠŸΡ€Π΅ΡΡ

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»Π΅Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ

Косая Ρ‡Π΅Ρ€Ρ‚Π° (/)

Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΎΠ±Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ

Π—Π²Π΅Π·Π΄ΠΎΡ‡ΠΊΠ° (✲)

Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ

Π—Π½Π°ΠΊ минус (-)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Если Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Π΅Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, ΠΎΠ½Π° останСтся Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ.ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ, Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ снова Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΠΈ.

НаТатиС Π½Π° элСмСнты с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиш ΠΌΡ‹ΡˆΠΈ

ПослС Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠ½ΠΎΠΏΠΊΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‰Π΅Π»ΠΊΠ°Ρ‚ΡŒ элСмСнты Π½Π° экранС.

Π‘

ΠΏΠΎ

Π‘Π΄Π΅Π»Π°ΠΉ это

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ элСмСнт

Π’Ρ‹Π±Ρ€Π°Π² Π»Π΅Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² качСствС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ, Π½Π°Π²Π΅Π΄ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ 5

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ элСмСнт ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ

Π’Ρ‹Π±Ρ€Π°Π² ΠΏΡ€Π°Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² качСствС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ, Π½Π°Π²Π΅Π΄ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ 5

Π”Π²Π°ΠΆΠ΄Ρ‹ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ элСмСнт

Π’Ρ‹Π±Ρ€Π°Π² Π»Π΅Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² качСствС Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ, Π½Π°Π²Π΅Π΄ΠΈΡ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π·Π½Π°ΠΊ плюса (+)

ΠŸΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ элСмСнтов с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ клавиш ΠΌΡ‹ΡˆΠΈ

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅.Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ элСмСнт.

Π‘

ΠΏΠΎ

Π‘Π΄Π΅Π»Π°ΠΉ это

ΠŸΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚Π΅ элСмСнт

НавСдитС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ Π½Π° элСмСнт ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ноль (0)

Π‘Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚

Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ мСсто, ΠΊΡƒΠ΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ элСмСнт, Π° Π·Π°Ρ‚Π΅ΠΌ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π΄Π΅ΡΡΡ‚ΠΈΡ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ (.)

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ:

  • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΈ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ элСмСнт.

  • Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΊΠ°ΠΊ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ двиТСния указатСля ΠΌΡ‹ΡˆΠΈ ΠΈ ΠΈΠ·Π΄Π°Π΅Ρ‚ Π»ΠΈ ваш ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π·Π²ΡƒΠΊ ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ клавиш ΠΌΡ‹ΡˆΠΈ, Π² Π¦Π΅Π½Ρ‚Ρ€Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΡŒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ ΠΠ°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ клавиши ΠΌΡ‹ΡˆΠΈ .

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€, Ρ‡Π»Π΅Π½-ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΈΡ†Π° The Pointer Sisters, ΡƒΠΌΠ΅Ρ€Π»Π° Π² возрастС 69 Π»Π΅Ρ‚: NPR

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΎ Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΎΠΌ


ΡΠΊΡ€Ρ‹Ρ‚ΡŒ подпись

ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ подпись

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΎ Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΎΠΌ

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΎ Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΎΠΌ

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€, ΠΎΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΡŒΠ½ΠΈΡ†Π° ΠΏΡ€Π΅ΠΌΠΈΠΈ Грэмми, ΠΏΠ΅Π²ΠΈΡ†Π° ΠΈ Π°Π²Ρ‚ΠΎΡ€ пСсСн, которая Π±Ρ‹Π»Π° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· основатСлСй вокальной Π³Ρ€ΡƒΠΏΠΏΡ‹ Pointer Sisters, ΡƒΠΌΠ΅Ρ€Π»Π° Π² возрастС 69 Π»Π΅Ρ‚. О Π΅Π΅ смСрти Π±Ρ‹Π»ΠΎ объявлСно Π² заявлСнии, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π»ΠΎ воспоминания Π΅Π΅ ΡΡ‚Π°Ρ€ΡˆΠ΅ΠΉ сСстры Аниты ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€. Β«Π‘ΠΎΠ½Π½ΠΈ Π±Ρ‹Π»Π° ΠΌΠΎΠ΅ΠΉ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΠΎΠ΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈ ΠΌΡ‹ Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€ΠΈΠ²Π°Π»ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь; Ρƒ нас Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΎ ссор Π² нашСй ΠΆΠΈΠ·Π½ΠΈ. Π― ΡƒΠΆΠ΅ ΡΠΊΡƒΡ‡Π°ΡŽ ΠΏΠΎ Π½Π΅ΠΉ ΠΈ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΡƒΠ²ΠΈΠΆΡƒ Π΅Π΅ снова». ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π½Π΅ Π±Ρ‹Π»Π° ΡƒΠΊΠ°Π·Π°Π½Π°.

The Pointer Sisters ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΈ ΠΎΡ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ Pointers — A Pair ΠΈΠ· Π‘Π°Π½-Ѐранциско, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π‘ΠΎΠ½Π½ΠΈ сформировала Π² 1969 Π³ΠΎΠ΄Ρƒ вмСстС со своСй младшСй сСстрой Π”ΠΆΡƒΠ½. Дуэт исполнял ΠΊΠ°Π²Π΅Ρ€Ρ‹ Π² стилС R&B Π² ΠΊΠ»ΡƒΠ±Π°Ρ… ОклСнда ΠΈ Π±Ρ‹Π» Ρ‡Π°ΡΡ‚ΡŒΡŽ МолодСТного Ρ…ΠΎΡ€Π° ΡˆΡ‚Π°Ρ‚Π° БСвСрная ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΡ. Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ ΡƒΠ²ΠΈΠ΄Π΅Π»Π°, ΠΊΠ°ΠΊ Π΅Π΅ сСстры ΠΏΠΎΡŽΡ‚ с Ρ…ΠΎΡ€ΠΎΠΌ Π² Fillmore West, ΠΈ сразу ΠΆΠ΅ бросила Ρ€Π°Π±ΠΎΡ‚Ρƒ сСкрСтаря ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠ²Ρ‹ΠΌ вопросам, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ‚ΡŒ с Π½ΠΈΠΌΠΈ.

ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€Ρ‹ выросли Π² Ρ…ΠΎΡ€Π΅ Π² Ρ†Π΅Ρ€ΠΊΠ²ΠΈ своСго ΠΎΡ‚Ρ†Π° Π² ОклСндС ΠΈ Ρ‚Π°ΠΉΠ½ΠΎ ΡΠ»ΡƒΡˆΠ°Π»ΠΈ свСтскоС Ρ€Π°Π΄ΠΈΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠΌΠ°: Нина Π‘ΠΈΠΌΠΎΠ½, Элвис ΠŸΡ€Π΅ΡΠ»ΠΈ, Бэм ΠšΡƒΠΊ, Π­Ρ‚Ρ‚Π° ДТСймс.ПозТС Π±Ρ€Π°Ρ‚ΡŒΡ ΠΈ сСстры нСустанно Ρ‚Ρ€ΡƒΠ΄ΠΈΠ»ΠΈΡΡŒ Π½Π°Π΄ своСй ΠΌΡƒΠ·Ρ‹ΠΊΠΎΠΉ — Ρ€Π΅ΠΏΠ΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ, сочиняли ΠΈ Π°Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π²ΠΎΠΊΠ°Π», сочиняли ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ пСсни — ΠΈ Π²ΠΏΠΈΡ‚Ρ‹Π²Π°Π»ΠΈ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ, ΠΊΡƒΠ»ΡŒΡ‚ΡƒΡ€Ρƒ ΠΈ ΠΌΡƒΠ·Ρ‹ΠΊΡƒ, Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π»ΡΠ²ΡˆΡƒΡŽ Π‘Π°Π½-Ѐранциско ΠΊΠΎΠ½Ρ†Π° 60-Ρ… Π³ΠΎΠ΄ΠΎΠ².

Как Ρ‚Ρ€ΠΈΠΎ, ΠΎΠ½ΠΈ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ свои эклСктичныС ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ вкусы ΠΈ сцСничСский ΠΎΠΏΡ‹Ρ‚ Π½Π° ΠΊΠΎΠ½Ρ†Π΅Ρ€Ρ‚Ρ‹, исполняя бэк-Π²ΠΎΠΊΠ°Π» для ГрСйс Π‘Π»ΠΈΠΊ, Π‘ΠΈΠ»ΡŒΠ²Π΅ΡΡ‚Ρ€Π°, Π‘ΠΎΠ·Π° Бкаггса ΠΈ Π­Π»Π²ΠΈΠ½Π° Π‘ΠΈΡˆΠΎΠΏΠ°. Π‘ΠΎΠ½Π½ΠΈ — Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ, ТизнСрадостная вокалистка, которая Π±Π΅Π· особых усилий объСдинила элСмСнты соула, ΠΏΠΎΠΏ-ΠΌΡƒΠ·Ρ‹ΠΊΠΈ ΠΈ Π΄ΠΆΠ°Π·Π°, — особСнно тяготСла ΠΊ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.Β«Π― ΠΈΠ· Ρ‚Π΅Ρ… людСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»ΡŽΠ±ΡΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π½ΠΎΠ²Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ — это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ для мСня, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Ρ‚ΠΈ Π²ΠΏΠ΅Ρ€Π΅Π΄, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я Π½Π΅ люблю Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‡Π΅ΠΌ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠΌΒ», — сказала ΠΎΠ½Π° Blues & Soul. in 1979.

Π­Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π·ΡŽΠΌΠΈΡ€ΠΎΠ²Π°Π»ΠΎ Ρ€Π°Π½Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Pointer Sisters, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ поддавались ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Ранняя сдСлка с Atlantic Records пошла Π½Π° ΡƒΠ±Ρ‹Π»ΡŒ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π»Π΅ΠΉΠ±Π» попытался ΠΏΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ ΠΈΡ… ΠΊ прямолинСйному R&B. Π’ Fairytale: The Pointer Sisters ‘Family Story, Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ вспоминала, Ρ‡Ρ‚ΠΎ Π‘ΠΎΠ½Π½ΠΈ Π±Ρ‹Π»Π° особСнно Π½Π΅ΠΏΡ€Π΅ΠΊΠ»ΠΎΠ½Π½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π³Ρ€ΡƒΠΏΠΏΠ° Ρ…ΠΎΡ‚Π΅Π»Π° Π·Π²ΡƒΡ‡Π°Ρ‚ΡŒ эклСктично: Β«ΠœΡ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ.ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠ΅Ρ‚ΡŒ всС Β».

Когда сСстра Π ΡƒΡ‚ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»Π°ΡΡŒ ΠΊ Π³Ρ€ΡƒΠΏΠΏΠ΅, ΠΈ ΠΎΠ½ΠΈ нашли Π΄ΠΎΠΌ Π½Π° нСзависимом Π»Π΅ΠΉΠ±Π»Π΅ Blue Thumb, состояниС Sisters ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΠΎΡΡŒ. Π˜Ρ… ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹ΠΉ Π΄Π΅Π±ΡŽΡ‚Π½Ρ‹ΠΉ альбом 1973 Π³ΠΎΠ΄Π° открылся ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Ρ…ΠΈΡ‚ΠΎΠΌ — a напористая ΠΊΠ°Π²Π΅Ρ€-вСрсия пСсни АллСна ВуссСна Β«Yes We Can CanΒ» — ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ ΡΡ‚ΠΎΠ»ΡŒ ΠΆΠ΅ Π³Ρ€ΠΎΠ·Π½ΠΎ, исполнСниСм Β«Wang Dang DoodleΒ» Π² блюзовом стилС. ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ Pointers ΠΊΠΎΡΠ½ΡƒΠ»ΠΈΡΡŒ Π΄ΠΆΠ°Π·Π°, свинга ΠΈ БродвСя.

Β«ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ эту зСмлю / Π»ΡƒΡ‡ΡˆΡƒΡŽ зСмлю /, Ρ‡Π΅ΠΌ Ρ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ ΠΆΠΈΠ²Π΅ΠΌΒ», — ΠΏΠΎΡŽΡ‚ БСстры Π² спСктаклС Β« Soul Train Β» 1973 Π³ΠΎΠ΄Π°.

YouTube

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π³ΠΎΠ΄ Π² альбом It’s A Plenty вошла нСТная дСрСвСнская Π±Π°Π»Π»Π°Π΄Π° «Fairytale», ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π‘ΠΎΠ½Π½ΠΈ ΠΈ Анита написали Π² соавторствС. ПСсня ΠΏΠΎΠΏΠ°Π»Π° Π² ΠΏΠΎΠΏ-Ρ‡Π°Ρ€Ρ‚Ρ‹, Π²Ρ‹ΠΈΠ³Ρ€Π°Π»Π° Β«Π›ΡƒΡ‡ΡˆΠ΅Π΅ ΠΊΠ°Π½Ρ‚Ρ€ΠΈ-вокальноС исполнСниС дуэтом ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉΒ» Π½Π° Грэмми, Π° ΠΏΠΎΠ·ΠΆΠ΅ Π±Ρ‹Π»Π° Π²Ρ‹Ρ€Π΅Π·Π°Π½Π° Элвисом ΠŸΡ€Π΅ΡΠ»ΠΈ. Π‘ΠΎΠ½Π½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ со своими сСстрами написала Π±Π»ΡŽΠ·ΠΎΠ²Ρ‹ΠΉ «Shaky Flat Blues» этого альбома, Π° вслСд Π·Π° этим написала ΠΊΡ€Π΅Π΄ΠΈΡ‚ Π½Π° сдСрТанный, Π·Π½ΠΎΠΉΠ½Ρ‹ΠΉ Ρ„Π°Π½ΠΊ-ΠΏΠΎΡ†Π΅Π»ΡƒΠΉ 1975 Π³ΠΎΠ΄Π° «How Long (Betcha ‘Got a Chick on the Side), «Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ…ΠΈΡ‚.

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ»Π° Π³Ρ€ΡƒΠΏΠΏΡƒ Π² 1977 Π³ΠΎΠ΄Ρƒ, Π½Π°Ρ‡Π°Π² ΡΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ с Π΄Π²ΡƒΡ… ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… альбомов. Она добилась наибольшСго успСха Π² Ρ‚Π°Π½Ρ†Π΅Π²Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‡Π°Ρ€Ρ‚Π°Ρ…, ΠΏΠΎΠΏΠ°Π² Π² Ρ‚ΠΎΠΏ-10 с ΠΊΠ°Π²Π΅Ρ€Π°ΠΌΠΈ Π½Π° Ρ…ΠΈΡ‚Ρ‹ Motown Β«Π― Π½Π΅ ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠΌΠΎΡ‡ΡŒ сСбС (Sugar Pie, Honey Bunch)Β» ΠΈ Β«Heaven Must Have Sent YouΒ». ПослСдний Π±Ρ‹Π» Π΅Π΅ самым большим ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΌ Ρ…ΠΈΡ‚ΠΎΠΌ: ΠΎΠ½Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ записала Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠ΄ своСго скэт-пСния, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ создала ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΡƒΡŽ ΡΡ€ΠΊΡƒΡŽ дискотСку послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡƒΡΠ»Ρ‹ΡˆΠ°Π»Π° пСсню Village People «Y.M.C.A. «

» Π­Ρ‚ΠΎ Π½Π°Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΎ мСня Π½Π° ΠΌΡ‹ΡΠ»ΡŒ ΡΠΏΠ΅Ρ‚ΡŒ это Π²ΠΎΡ‚ Ρ‚Π°ΠΊ, — сказала ΠΎΠ½Π° Π² 2013 Π³ΠΎΠ΄Ρƒ. — Π’ΠΎΡ‚ Π³Π΄Π΅ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Ρ€ΠΈΡ‚ΠΌ ΠΈ Ρ€ΠΈΡ‚ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠ» Π‘Π΅Ρ€Ρ€ΠΈ Π“ΠΎΡ€Π΄ΠΈ ΠΈ сказал Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. Π― Π½Π΅ Π·Π½Π°Π», Ρ‡Ρ‚ΠΎ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ ΡΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΠΌΠΏΡ€ΠΎΠ²ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. Π― сдСлал это Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ вдохновСния Β».

Π’ этом свободном Π΄ΠΆΠ°Π·ΠΎΠ²ΠΎΠΌ Π½ΠΎΠΌΠ΅Ρ€Π΅ Sisters ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‚ΡΡ с Π»ΠΈΡ…ΠΎΡ€Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΌ Ρ‚Π΅ΠΌΠΏΠΎΠΌ Ρ„ΠΎΡ€Ρ‚Π΅ΠΏΠΈΠ°Π½ΠΎ ΠΈ Ρ€ΠΈΡ‚ΠΌ-сСкции, придавая исполнСнию радостноС Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΈΠ΅.

YouTube

ΠŸΡΡ‚Ρ‹ΠΉ Ρ€Π΅Π±Π΅Π½ΠΎΠΊ ΠΏΡ€Π΅ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Π­Π»Ρ‚ΠΎΠ½Π° ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€Π° ΠΈ Π΅Π³ΠΎ ΠΆΠ΅Π½Ρ‹ Π‘Π°Ρ€Ρ‹, Π‘ΠΎΠ½Π½ΠΈ, Ρ€ΠΎΠ΄ΠΈΠ²ΡˆΠ°ΡΡΡ ΠŸΠ°Ρ‚Ρ€ΠΈΡΠΈΡ Π•Π²Π° ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Π² ОклСндС Π² 1950 Π³ΠΎΠ΄Ρƒ. Π’ ΠΊΠ½ΠΈΠ³Π΅ Fairytale: The Pointer Sisters ‘Family Story Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ сказала, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π΅ Π‘ΠΎΠ½Π½ΠΈ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΎΡ‚ няни, Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ²ΡˆΠ΅ΠΉ, Ρ‡Ρ‚ΠΎ молодая Π΄Π΅Π²ΡƒΡˆΠΊΠ° Π±Ρ‹Π»Π° Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π½ΡŒΠΊΠΎΠΉ, ΠΊΠ°ΠΊ Π·Π°ΠΉΡ‡ΠΈΠΊ. Π’ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π΅ сама Π‘ΠΎΠ½Π½ΠΈ Ρ€Π΅ΡˆΠΈΠ»Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ нСТности, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π² сСбя Π² Π‘ΠΎΠ½Π½ΠΈ.«МнС нравится идСя Π½Π°Π·Π²Π°Ρ‚ΡŒ сСбя, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сСбя», — сказала ΠΎΠ½Π° Π² ΠΊΠ½ΠΈΠ³Π΅. Β«Π― СдинствСнный Π² сСмьС, Ρƒ ΠΊΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ·Π²ΠΈΡ‰Π΅Β».

ПодобноС иконоборчСство Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΈ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹ Π‘ΠΎΠ½Π½ΠΈ. Она Π±Ρ‹Π»Π° ΠΎΠ΄Π°Ρ€Π΅Π½Π½Ρ‹ΠΌ Ρ…ΡƒΠ΄ΠΎΠΆΠ½ΠΈΠΊΠΎΠΌ ΠΈ писатСлСм, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²Ρ‹ΠΌ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π½Ρ‚ΠΎΠΌ; Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ описала Π΅Π΅ ΠΊΠ°ΠΊ Β«ΠΏΡ€ΠΎΠ²ΠΈΠ΄Ρ†Π°Β» сСмьи Π² Fairytale: The Pointer Sisters ‘Family Story, , Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π΄Π°Π²Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€ Pointer Sisters Дэвид Рубинсон Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠ½ΠΈΠ³Π΅, Ρ‡Ρ‚ΠΎ Π‘ΠΎΠ½Π½ΠΈ Π±Ρ‹Π»Π° Β«ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ мятСТной».Она Π΄ΡƒΡ… напористости ΠΈ увСрСнности Π² сСбС. Π£ Π½Π΅Π΅ нСвСроятно высокая энСргия ΠΈ напряТСнный ΠΎΠ±Ρ€Π°Π· ΠΆΠΈΠ·Π½ΠΈ Β».

ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ выпустила Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ альбом, If the Price Is Right 1984 Π³ΠΎΠ΄Π°, Π½ΠΎ Π·Π°Ρ‚Π΅ΠΌ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни ΠΎΡ‚ΠΎΡˆΠ»Π° ΠΎΡ‚ записи, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Like a Picasso 2011 Π³ΠΎΠ΄Π°. воссоСдинилась со своими сСстрами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ. Π’ ΠΊΠΎΠ½Ρ†Π΅ 2019 Π³ΠΎΠ΄Π° Ρ„Π°Π½Π°Ρ‚ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π», ΠΊΠ°ΠΊ Π‘ΠΎΠ½Π½ΠΈ ΠΈ Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ ΠΏΠΎΡŽΡ‚ ΠΈΠΌΠΏΡ€ΠΎΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ «Fire» Π² Π±Π°Ρ€Π΅ Лас-ВСгаса, дСмонстрируя Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… ΠΏΡ€ΠΎΡ‡Π½ΡƒΡŽ Π²ΠΎΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ связь, Π½ΠΎ ΠΈ Π΅Π΅ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΡƒΡŽ Π»ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ.

Β«Π£ Π‘ΠΎΠ½Π½ΠΈ всСгда Π±Ρ‹Π»ΠΈ особыС послСдоватСли», — сказала Π ΡƒΡ‚ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Π² 2009 Π³ΠΎΠ΄Ρƒ. «Она Π±Ρ‹Π»Π° самой смСлой ΠΈΠ· всСх, ΠΎΠ½Π° Π±Ρ‹Π»Π° самой Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΈΠ· всСх нас. ΠœΡ‹ всС спали Π² ΠΎΡ‚Π΅Π»Π΅, Π° Π‘ΠΎΠ½Π½ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΠ»Π° Π½Π° ΡƒΠ»ΠΈΡ†Ρƒ. , Π²Π΅Ρ‡Π΅Ρ€ΠΈΠ½ΠΊΠΈ с Ρ„Π°Π½Π°Ρ‚Π°ΠΌΠΈ. Они любили ΠΈΡ… Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π‘ΠΎΠ½Π½ΠΈ, дорогая! »

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€, ΠΎΠ΄Π½Π° ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΈΡ† Π³Ρ€ΡƒΠΏΠΏΡ‹ Pointer Sisters, ΡƒΠΌΠ΅Ρ€Π»Π° Π² возрастС 69 Π»Π΅Ρ‚.

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€, которая Π² 1969 Π³ΠΎΠ΄Ρƒ ΡƒΠ±Π΅Π΄ΠΈΠ»Π° Ρ‚Ρ€ΠΎΠΈΡ… своих Π±Ρ€Π°Ρ‚ΡŒΠ΅Π² ΠΈ сСстСр, ΠΏΠΎΡŽΡ‰ΠΈΡ… Π² Ρ†Π΅Ρ€ΠΊΠ²ΠΈ, ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ Pointer Sisters, которая станСт ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых ярких выступлСний Π΄Π²ΡƒΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ…. дСсятилСтия ΡƒΠΌΠ΅Ρ€ Π² понСдСльник.Π•ΠΉ Π±Ρ‹Π»ΠΎ 69.

ΠžΠ±Π»Π°Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€Π΅ΠΌΠΈΠΈ «Грэмми» ΡƒΠΌΠ΅Ρ€ ΠΎΡ‚ остановки сСрдца Π² Лос-АндТСлСсС, сообщил публицист Π ΠΎΠ΄ΠΆΠ΅Ρ€ Нил.

Β«Π‘ большой ΠΏΠ΅Ρ‡Π°Π»ΡŒΡŽ я Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠ°ΠΌ Pointer Sisters, Ρ‡Ρ‚ΠΎ моя сСстра Π‘ΠΎΠ½Π½ΠΈ ΡƒΠΌΠ΅Ρ€Π»Π° сСгодня ΡƒΡ‚Ρ€ΠΎΠΌΒ», — сказала сСстра Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Π² своСм заявлСнии. «Наша сСмья ΠΎΠΏΡƒΡΡ‚ΠΎΡˆΠ΅Π½Π°, ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΈΡ… Π±Ρ€Π°Ρ‚ΡŒΠ΅Π² ΠΈ сСстСр, ΠΈ мСня, ΠΈ всСй сСмьи ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ΠΎΠ² ΠΌΡ‹ просим Π²Π°ΡˆΠΈΡ… ΠΌΠΎΠ»ΠΈΡ‚Π² сСйчас».

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ часто ΠΏΠ΅Π»Π° ΠΈ Π±Ρ‹Π»Π° Π²Π°ΠΆΠ½Ρ‹ΠΌ участником Π³Ρ€ΡƒΠΏΠΏΡ‹ благодаря своим Ρ€Π°Π½Π½ΠΈΠΌ Ρ…ΠΈΡ‚Π°ΠΌ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Β«Yes We Can CanΒ» ΠΈ Β«FairytaleΒ».Β«Π’ 1977 Π³ΠΎΠ΄Ρƒ ΠΎΠ½Π° оставила ΠΊΠΎΡ€ΠΎΡ‚ΠΊΡƒΡŽ ΠΈ ΡΠΊΡ€ΠΎΠΌΠ½ΡƒΡŽ ΡΠΎΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΅ сСстры сдСлали нСсколько ΠΌΠ΅Π³Π°-Ρ…ΠΈΡ‚ΠΎΠ² Π±Π΅Π· Π½Π΅Π΅.

Π ΡƒΡ‚, Анита, Π‘ΠΎΠ½Π½ΠΈ ΠΈ Π”ΠΆΡƒΠ½, Ρ€ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠ΅ΡΡ Π΄ΠΎΡ‡Π΅Ρ€ΠΈ свящСнника, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π΄Π²Π° ΡΡ‚Π°Ρ€ΡˆΠΈΡ… сына, вырос Π² своСй Ρ†Π΅Ρ€ΠΊΠ²ΠΈ Π² ОклСндС, ΡˆΡ‚Π°Ρ‚ ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΡ.

ИмСнно Π‘ΠΎΠ½Π½ΠΈ, вскорС послС окончания срСднСй ΡˆΠΊΠΎΠ»Ρ‹, Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»Π° ΡƒΠΉΡ‚ΠΈ ΠΎΡ‚ пСния Π΅Π²Π°Π½Π³Π΅Π»ΡŒΡΠΊΠΈΡ… пСсСн Π² ΠΊΠ»ΡƒΠ±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ пСвчСской ΠΊΠ°Ρ€ΡŒΠ΅Ρ€ΠΎΠΉ.

«БСстры ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π±Ρ‹ Π½Π΅ стали ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π±Ρ‹, Ссли Π±Ρ‹ Π½Π΅ Π‘ΠΎΠ½Π½ΠΈ Β», — сказала Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Π² своСм заявлСнии.

Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ (слСва) ΠΈ Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ ΠΈΠ· сСстСр ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Π²ΠΈΠ΄Π΅Π»ΠΈ 10 апрСля 2019 Π³ΠΎΠ΄Π° Π² Лос-АндТСлСсС, ΠšΠ°Π»ΠΈΡ„ΠΎΡ€Π½ΠΈΡ.

Π›Π΅ΠΎΠ½ Π‘Π΅Π½Π½Π΅Ρ‚Ρ‚ / Π“Π΅Ρ‚Ρ‚ΠΈ

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

ΠšΠ²Π°Ρ€Ρ‚Π΅Ρ‚ привнСс Π² своС выступлСниС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ сочСтаниС Ρ„Π°Π½ΠΊΠ°, соула ΠΈ Π΄ΠΆΠ°Π·Π°, скэта ΠΈ ΠΏΠΎΠΏΠ° Π² стилС 1940-Ρ…, часто одСвшись Π² Ρ€Π΅Ρ‚Ρ€ΠΎ-стилС, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌ своих ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½Π½ΠΈΠΊΠΎΠ², сСстСр Π­Π½Π΄Ρ€ΡŽΡ.

Они Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΈ бэк-вокалистами для Π’Π°Π΄ΠΆ-ΠœΠ°Ρ…Π°Π»Π°, Π‘ΠΎΠ·Π° Бкаггса, Π­Π»Π²ΠΈΠ½Π° Π‘ΠΈΡˆΠΎΠΏΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ…, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π² 1973 Π³ΠΎΠ΄Ρƒ выпустили свой ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹ΠΉ Π΄Π΅Π±ΡŽΡ‚Π½Ρ‹ΠΉ альбом, ΠΈ пСсня Β«Yes We Can CanΒ», Ρ„Π°Π½ΠΊ-Π³ΠΈΠΌΠ½, ΠΏΡ€ΠΈΠ·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΊ Сдинству ΠΈ тСрпимости, стала ΠΈΡ… ΠΏΡ€ΠΎΡ€Ρ‹Π².

Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ выпустили «It’s A Plenty», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»ΠΈ прСдставлСны эклСктичноС сочСтаниС ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… стилСй ΠΎΡ‚ Π΄ΠΆΠ°Π·Π° Π΄ΠΎ госпСла ΠΈ ΠΏΠΎΠΏ-ΠΌΡƒΠ·Ρ‹ΠΊΠΈ.

Π”Π°ΠΆΠ΅ Π² Π΄Π΅Ρ€Π΅Π²Π½ΡŽ копались. Π‘ΠΎΠ½Π½ΠΈ ΠΈ Анита написали Π² соавторствС пСсню «Fairytale» ΠΎ Ρ€Π°Π·Ρ€ΡƒΡˆΠ°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ….Π­Ρ‚Π° пСсня принСсла ΠΈΠΌ новаторский ΠΊΠΎΠ½Ρ†Π΅Ρ€Ρ‚, выступив Π² качСствС Ρ€Π΅Π΄ΠΊΠΎΠ³ΠΎ Π°Ρ„Ρ€ΠΎΠ°ΠΌΠ΅Ρ€ΠΈΠΊΠ°Π½Ρ†Π° Π² Grand Ole Opry, ΠΈ ΠΎΠ½ΠΈ Π²Ρ‹ΠΈΠ³Ρ€Π°Π»ΠΈ свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€Π΅ΠΌΠΈΡŽ Грэмми Π·Π° Π»ΡƒΡ‡ΡˆΠ΅Π΅ ΠΊΠ°Π½Ρ‚Ρ€ΠΈ-вокальноС исполнСниС Π³Ρ€ΡƒΠΏΠΏΡ‹.

Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ ΠΏΠΎΠΊΠΈΠ½ΡƒΠ»Π° Π³Ρ€ΡƒΠΏΠΏΡƒ Π² 1977 Π³ΠΎΠ΄Ρƒ, подписав ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ с Motown Records.

ΠŸΠ΅Π²ΠΈΡ†Π° Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ (слСва) Ρ‚Ρ€ΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ΅Π²Ρ†Π° Майкла ДТСксона (Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅) ΠΏΠΎ Ρ‰Π΅ΠΊΠ΅, Π° сСстра ДТСксона Латойя (справа) улыбаСтся Π²ΠΎ врСмя Ρ†Π΅Ρ€Π΅ΠΌΠΎΠ½ΠΈΠΈ вручСния Π½Π°Π³Ρ€Π°Π΄Ρ‹ American Music Awards Π² Лос-АндТСлСсС.

AP

Β«ΠœΡ‹ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡƒΡΡ‚ΠΎΡˆΠ΅Π½Ρ‹Β», — сказала Анита ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ Associated Press Π² 1990 Π³ΠΎΠ΄Ρƒ.Β«ΠœΡ‹ выступили Π² Ρ‚Ρƒ Π½ΠΎΡ‡ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΡƒΡˆΠ»Π°, Π½ΠΎ послС этого просто ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ. ΠœΡ‹ Π΄ΡƒΠΌΠ°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π±Π΅Π· Π‘ΠΎΠ½Π½ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ получится».

Π£ Π½Π΅Π΅ Π±Ρ‹Π» Π±Ρ‹ лишь скромный ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΉ успСх. Π•Π΅ самым большим Ρ…ΠΈΡ‚ΠΎΠΌ Π±Ρ‹Π»Π° «Heaven Must Have Sent You», диско-ΠΊΠ°Π²Π΅Ρ€ 1979 Π³ΠΎΠ΄Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΠΉ Ρ…ΠΈΡ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ «Motown» Элгинсов. Он достиг β„– 11 Π² Billboard Hot 100 Π² 1979 Π³ΠΎΠ΄Ρƒ.

ПослС записи Ρ‚Ρ€Π΅Ρ… альбомов для Motown, ΠΎΠ½Π° ΡƒΡˆΠ»Π° ΠΈΠ· студии ΠΈ выступала лишь ΠΈΠ·Ρ€Π΅Π΄ΠΊΠ°.

Π•Π΅ Ρ‚Ρ€ΠΈ сСстры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ€Π°ΡΠΏΠ°Π»ΠΈΡΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° ΡƒΡˆΠ»Π°, вмСсто этого ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ, ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ своСго Ρ€Π΅Ρ‚Ρ€ΠΎ-ΠΈΠΌΠΈΠ΄ΠΆΠ° Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ соврСмСнного ΠΏΠΎΠΏ-саунда ΠΈ стали ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· самых Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠ² 1980-Ρ… Π³ΠΎΠ΄ΠΎΠ² с ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌΠΈ Ρ…ΠΈΡ‚Π°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Β«He’s So ShyΒ», Β«Jump ( Π Π°Π΄ΠΈ ΠΌΠΎΠ΅ΠΉ любви) Β»ΠΈΒ« НСйтронный Ρ‚Π°Π½Π΅Ρ†.

Π‘ΠΎΠ½Π½ΠΈ Π²Ρ‹ΡˆΠ»Π° Π·Π°ΠΌΡƒΠΆ Π·Π° ΠΏΡ€ΠΎΠ΄ΡŽΡΠ΅Ρ€Π° Motown Π”ΠΆΠ΅Ρ„Ρ„Ρ€ΠΈ Боуэна Π² 1978 Π³ΠΎΠ΄Ρƒ. Π’ 2004 Π³ΠΎΠ΄Ρƒ ΠΎΠ½ΠΈ Ρ€Π°ΡΡΡ‚Π°Π»ΠΈΡΡŒ ΠΈ Ρ€Π°Π·Π²Π΅Π»ΠΈΡΡŒ Π² 2016 Π³ΠΎΠ΄Ρƒ.

Она Π΄Π²Π°ΠΆΠ΄Ρ‹ воссоСдинялась со своими сСстрами для ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… выступлСний. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ Π² 1994 Π³ΠΎΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π·Π²Π΅Π·Π΄Ρƒ Π½Π° Голливудской Π°Π»Π»Π΅Π΅ славы, ΠΈ снова Π² 1996 Π³ΠΎΠ΄Ρƒ Π½Π° ΡˆΠΎΡƒ Π² Лас-ВСгасС.

«Она всСгда Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»Π° ΠΌΠ½Π΅, ΠΌΠ°ΠΌΠ°, я Ρ…ΠΎΡ‡Ρƒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ для сСбя», — сказала Π­Π±ΠΎΠ½ΠΈ Π² 1974 Π³ΠΎΠ΄Ρƒ ΠΌΠ°Ρ‚ΡŒ Π‘ΠΎΠ½Π½ΠΈ Π‘Π°Ρ€Π° ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€. Β«Π― Ρ…ΠΎΡ‡Ρƒ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Π² этом ΠΌΠΈΡ€Π΅Β».

Π”ΠΆΡƒΠ½ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€, младшая ΠΈΠ· сСстСр, ΡƒΠΌΠ΅Ρ€Π»Π° Π² 2006 Π³ΠΎΠ΄Ρƒ.

Помимо Π ΡƒΡ‚ ΠΈ Аниты, Ρƒ Π‘ΠΎΠ½Π½ΠΈ ΠŸΠΎΠΉΠ½Ρ‚Π΅Ρ€ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π΄Π²Π° ΡΡ‚Π°Ρ€ΡˆΠΈΡ… Π±Ρ€Π°Ρ‚Π°, Аарон ΠΈ Π€Ρ€ΠΈΡ†.

Π—Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ смСрти Π² 2020 Π³ΠΎΠ΄Ρƒ

150 Ρ„ΠΎΡ‚ΠΎ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля | Π‘Π»ΠΎΠ²Π°Ρ€ΡŒ английского языка Коллинза

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ‘ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ’ Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ

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


Π­Ρ‚ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ Π²Ρ‹Π±Ρ€Π°Π½Ρ‹ автоматичСски ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚.ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅β€¦

Π­Ρ‚ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для этой Π³ΠΎΠ½ΠΊΠΈ.

Π‘ΠΎΠ»Π½Ρ†Π΅ (2016)

Книга знамСнитости ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚.

The Sun (2017)

Π”Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ Π’Π΅Π»ΠΈΠΊΠΎΠ±Ρ€ΠΈΡ‚Π°Π½ΠΈΠΈ Π½Π° этой Π½Π΅Π΄Π΅Π»Π΅ прСдоставят Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ указания послС Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Π΄ΡƒΠΌΠ°.

Times, Sunday Times (2016)

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π²Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ дСрСвСнского ΠΏΠ°Π±Π°.

Times, Sunday Times (2014)

Π’ΠΈΠ΄Π΅ΠΎΠΊΠ»ΠΈΠΏ Π½Π΅ Π΄Π°Π΅Ρ‚ явного указания Π½Π° Π»ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°.

Times, Sunday Times (2008)

Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ испытываСт трудности с Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ ΠΈΠ»ΠΈ правописаниСм.

Times, Sunday Times (2007)

Им просто Π½ΡƒΠΆΠ½ΠΎ нСсколько ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΠΎ ΠΏΡƒΡ‚ΠΈ.

Times, Sunday Times (2013)

Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ.

Уэсткотт, ΠŸΡΡ‚ΡΠΈ, ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ Π·Π΄Ρ€Π°Π²ΠΎΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ для ΠΆΠ΅Π½Ρ‰ΠΈΠ½ (1991)

Π’ этом случаС появятся Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, способныС Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ.

Times, Sunday Times (2007)

ΠžΡ‚Π²Π΅Ρ‚Ρ‹ Π½ΠΈΠΆΠ΅, Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ.

Π‘ΠΎΠ»Π½Ρ†Π΅ (2012)

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ …

НС ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ Π²Ρ‹ ΠΌΠ½Π΅ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Ρ‚ΡŒ?

The Sun (2014)

Π­Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ для Π΄Ρ€ΡƒΠ³ΠΈΡ… отраслСй, стрСмящихся Π½Π°ΠΉΡ‚ΠΈ своС мСсто Π² ΠΌΠΈΡ€Π΅ с ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ высокими Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌΠΈ Π½Π° ΡΠ½Π΅Ρ€Π³ΠΈΡŽ ΠΈ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ силу.

Times, Sunday Times (2016)

Помимо наблюдСний, ΠΊΠΎΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ указатСлями.

Orton, Christine Eczema Relief — всСсторонний ΠΏΠ»Π°Π½ самопомощи (1990)

Он ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ Спископов Ρ‡Π΅Ρ€Π΅Π· процСсс Π½ΠΎΠΌΠΈΠ½Π°Ρ†ΠΈΠΈ ΠšΠΎΡ€ΠΎΠ½Ρ‹.

Times, Sunday Times (2011)

Он прСдоставит Π²Π°ΠΌ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, особСнно ΠΎ Ρ‚ΠΎΠΌ, Π³Π΄Π΅ Π²Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚Π΅ свои дСньги.

Tondeur, Keith Say Goodbye to Debt (1994)

Если Π²Ρ‹ пропуститС эту ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΡΠ΅Ρ€ΠΈΡŽ, Π²ΠΎΡ‚ нСсколько ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… совСтов.

Times, Sunday Times (2008)

МнС просто Π½ΡƒΠΆΠ½Ρ‹ указания Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС Π΅Ρ‰Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎ Π² ΠΌΠΎΠ΅ΠΌ возрастС.

Π‘ΠΎΠ»Π½Ρ†Π΅ (2009)

ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π»Π°Π·Π΅Ρ€Π½ΡƒΡŽ ΡƒΠΊΠ°Π·ΠΊΡƒ.

Π‘ΠΎΠ»Π½Ρ†Π΅ (2014)

Π’ΠΎΡ‚ Π΄Π΅ΡΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π‘ΠΎΠ»Π½Ρ†Π΅ (2014)

ΠΠ°Ρ…ΠΎΠ΄ΡΡΡŒ Π² Ρ†Π΅Ρ…Π΅, ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Π½Π° Ρ‡Ρ‚ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°.

Π‘ΠΎΠ»Π½Ρ†Π΅ (2014)

Π­Ρ‚ΠΎ довольно слоТно, Π½ΠΎ, надСюсь, я смогу Π΄Π°Ρ‚ΡŒ нСсколько ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ Π³ΠΎΠ΄Π°.

Times, Sunday Times (2014)

API Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля — Π²Π΅Π±-API

API Pointer Lock API (Ρ€Π°Π½Π΅Π΅ Π½Π°Π·Ρ‹Π²Π°Π²ΡˆΠΈΠΉΡΡ Mouse Lock API ) прСдоставляСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Π²ΠΎΠ΄Π°, основанныС Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ ΠΌΡ‹ΡˆΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (Ρ‚.Π΅.Π΅., Π΄Π΅Π»ΡŒΡ‚Ρ‹), Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ курсора ΠΌΡ‹ΡˆΠΈ Π² области просмотра. Π­Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ доступ ΠΊ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌΡƒ двиТСнию ΠΌΡ‹ΡˆΠΈ, привязываСт Ρ†Π΅Π»ΡŒ событий ΠΌΡ‹ΡˆΠΈ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту, устраняСт ограничСния Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π΄Π°Π»Π΅ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ΄Ρ‚ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΈ удаляСт курсор ΠΈΠ· поля зрСния. Он идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для 3D-ΠΈΠ³Ρ€ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π»ΠΈΡ†Π°.

Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, API ΠΏΠΎΠ»Π΅Π·Π΅Π½ для Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ трСбуСтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π²ΠΎΠ΄ ΠΌΡ‹ΡˆΠΈ для управлСния двиТСниями, ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ измСнСния записСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, позволяя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΡƒΠ³Π»ΠΎΠΌ ΠΎΠ±Π·ΠΎΡ€Π°, пСрСмСщая ΠΌΡ‹ΡˆΡŒ Π±Π΅Π· наТатия ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΊΠ½ΠΎΠΏΠΊΠΈ.Π—Π°Ρ‚Π΅ΠΌ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ для Π΄Ρ€ΡƒΠ³ΠΈΡ… дСйствий. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ прилоТСния для просмотра ΠΊΠ°Ρ€Ρ‚ ΠΈΠ»ΠΈ спутниковых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

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

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° указатСля связана с Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠΌ ΠΌΡ‹ΡˆΠΈ. Π—Π°Ρ…Π²Π°Ρ‚ ΠΌΡ‹ΡˆΠΈ обСспСчиваСт Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΡƒΡŽ доставку событий ΠΊ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ элСмСнту Π²ΠΎ врСмя пСрСтаскивания ΠΌΡ‹ΡˆΠΈ, Π½ΠΎ останавливаСтся ΠΏΡ€ΠΈ отпускании ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ. Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° указатСля отличаСтся ΠΎΡ‚ Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΌΡ‹ΡˆΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  • ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½ΠΎ: Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° указатСля Π½Π΅ освобоТдаСт ΠΌΡ‹ΡˆΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ сдСлан явный Π²Ρ‹Π·ΠΎΠ² API ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ТСст освобоТдСния.
  • НС ограничиваСтся Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΈΠ»ΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ экрана.
  • Он ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ события нСзависимо ΠΎΡ‚ состояния ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ.
  • Π‘ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ курсор.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ даСтся ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, связанных со спСцификациСй Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля.

requestPointerLock ()

API Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ полноэкранному API, Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ элСмСнты DOM, добавляя Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ requestPointerLock () . ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΈΠΌΠ΅Π» прСфикса, Π²Ρ‹ Π±Ρ‹ Π² настоящСС врСмя ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ указатСля Π½Π° элСмСнтС холста :

  холст.requestPointerLock = canvas.requestPointerLock ||
                            canvas.mozRequestPointerLock;

canvas.requestPointerLock ()
  

pointerLockElement ΠΈ exitPointerLock ()

API Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ интСрфСйс Document , добавляя ΠΊΠ°ΠΊ Π½ΠΎΠ²ΠΎΠ΅ свойство, Ρ‚Π°ΠΊ ΠΈ Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. НовоС свойство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для доступа ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ элСмСнту (Ссли Π΅ΡΡ‚ΡŒ) ΠΈ называСтся pointerLockElement , Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Document exitPointerLock () ΠΈ, ΠΊΠ°ΠΊ слСдуСт ΠΈΠ· названия, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· указатСля. Π·Π°ΠΌΠΎΠΊ.

Бвойство pointerLockElement ΠΏΠΎΠ»Π΅Π·Π½ΠΎ для опрСдСлСния, Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ элСмСнт Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для выполнСния логичСской ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ), Π° Ρ‚Π°ΠΊΠΆΠ΅ для получСния ссылки Π½Π° Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ элСмСнт, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ имССтся.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования pointerLockElement :

  if (document.pointerLockElement === canvas ||
  document.mozPointerLockElement === canvas) {
    console.log ('Бтатус Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½');
} Π΅Ρ‰Π΅ {
    консоль.log ('Бтатус Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½');
}  

ΠœΠ΅Ρ‚ΠΎΠ΄ Document.exitPointerLock () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля, ΠΈ, ΠΊΠ°ΠΊ ΠΈ requestPointerLock , Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ асинхронно с использованиСм событий pointerlockchange ΠΈ pointerlockerror , ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅ Π½ΠΈΠΆΠ΅.

  document.exitPointerLock = document.exitPointerLock ||
                           document.mozExitPointerLock;


document.exitPointerLock ();
  

ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля — Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ requestPointerLock () , exitPointerLock () , Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ клавиши ESC ΠΈ Ρ‚. Π”.- событиС pointerlockchange отправляСтся Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ . Π­Ρ‚ΠΎ простоС событиС, Π½Π΅ содСрТащСС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

  if ("onpointerlockchange" Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅) {
  document.addEventListener ('pointerlockchange', lockChangeAlert, false);
} else if ("onmozpointerlockchange" Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅) {
  document.addEventListener ('mozpointerlockchange', lockChangeAlert, лоТь);
}

function lockChangeAlert () {
  if (document.pointerLockElement === холст ||
  document.mozPointerLockElement === canvas) {
    консоль.log ('Бтатус Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½');
    
  } Π΅Ρ‰Π΅ {
    console.log ('Бтатус Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½');
    
  }
}  

Когда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка, вызванная Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ requestPointerLock () ΠΈΠ»ΠΈ exitPointerLock () , событиС pointerlockerror отправляСтся Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ . Π­Ρ‚ΠΎ простоС событиС, Π½Π΅ содСрТащСС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

  document.addEventListener ('pointerlockerror', lockError, false);
document.addEventListener ('mozpointerlockerror', lockError, false);

function lockError (e) {
  alert («Ошибка Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля»);
}  

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: с Π΄ΠΎ Firefox 50 ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π²Ρ‹ΡˆΠ΅ события ΠΈΠΌΠ΅Π»ΠΈ прСфикс moz Π² Firefox.

API Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ интСрфСйс MouseEvent Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ двиТСния. Π”Π²Π° Π½ΠΎΠ²Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° для событий ΠΌΡ‹ΡˆΠΈ — Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅X ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅Y — ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ полоТСния ΠΌΡ‹ΡˆΠΈ. ЗначСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ значСниями свойств MouseEvent, , screenX ΠΈ screenY , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² Π΄Π²ΡƒΡ… ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… событиях mousemove , eNow ΠΈ ePrevious .Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅X = eNow.screenX - ePrevious.screenX .

Π—Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ состояниС

Когда Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° указатСля, стандартныС свойства MouseEvent clientX , clientY , screenX ΠΈ screenY ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ постоянными, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ ΠΌΡ‹ΡˆΡŒ Π½Π΅ двигалась. Бвойства motionX ΠΈ motionY ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ полоТСния ΠΌΡ‹ΡˆΠΈ. НСт ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° значСния moveX ΠΈ motionY , Ссли ΠΌΡ‹ΡˆΡŒ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ пСрСмСщаСтся Π² ΠΎΠ΄Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ.ΠŸΠΎΠ½ΡΡ‚ΠΈΡ курсора ΠΌΡ‹ΡˆΠΈ Π½Π΅ сущСствуСт, ΠΈ курсор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ Π·Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΊΡ€Π°Π΅ΠΌ экрана.

Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ΠΎ состояниС

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅X ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅Y Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ нСзависимо ΠΎΡ‚ состояния Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΌΡ‹ΡˆΠΈ ΠΈ доступны Π΄Π°ΠΆΠ΅ Π² Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ состоянии для удобства.

Когда ΠΌΡ‹ΡˆΡŒ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°, систСмный курсор ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈ снова Π²ΠΎΠΉΡ‚ΠΈ Π² ΠΎΠΊΠ½ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Если это ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅X ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅Y ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ установлСны Π½Π° ноль.

ΠœΡ‹ написали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для настройки простой систСмы управлСния (см. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄). ДСмонстрация выглядит Ρ‚Π°ΠΊ:

Π’ этой дСмонстрации ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ JavaScript для рисования ΡˆΠ°Ρ€Π° ΠΏΠΎΠ²Π΅Ρ€Ρ… элСмСнта . Когда Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚Π΅ ΠΏΠΎ холсту, Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° указатСля Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния указатСля ΠΌΡ‹ΡˆΠΈ ΠΈ позволяСт Π²Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ мяч нСпосрСдствСнно с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΡ‹ΡˆΠΈ. ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

УстанавливаСм Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ x ΠΈ y Π½Π° холстС:

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Π² настоящСС врСмя ΠΈΠΌΠ΅ΡŽΡ‚ прСфиксы, поэтому Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ создадим ΠΈΡ… для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

  canvas.requestPointerLock = canvas.requestPointerLock ||
                            canvas.mozRequestPointerLock;

document.exitPointerLock = document.exitPointerLock ||
                           document.mozExitPointerLock;  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ настроили ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий для запуска ΠΌΠ΅Ρ‚ΠΎΠ΄Π° requestPointerLock () Π½Π° холстС ΠΏΡ€ΠΈ Π΅Π³ΠΎ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ указатСля.

  canvas.onclick = function () {
  canvas.requestPointerLock ();
}  

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»Π΅ событий Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля: pointerlockchange .Когда это происходит, ΠΌΡ‹ запускаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ lockChangeAlert () , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅.

 


document.addEventListener ('pointerlockchange', lockChangeAlert, false);
document.addEventListener ('mozpointerlockchange', lockChangeAlert, лоТь);  

Π­Ρ‚Π° функция провСряСт свойство pointLockElement, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ это холстом. Если это Ρ‚Π°ΠΊ, ΠΎΠ½ присоСдиняСт ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ ΠΌΡ‹ΡˆΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ updatePosition () . Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ снова удаляСт ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Ρ‚Π΅Π»ΡŒ событий.

  function lockChangeAlert () {
  if (document.pointerLockElement === холст ||
      document.mozPointerLockElement === canvas) {
    console.log ('Бтатус Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½');
    document.addEventListener ("mousemove", updatePosition, false);
  } Π΅Ρ‰Π΅ {
    console.log ('Бтатус Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ указатСля Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½');
    document.removeEventListener ("mousemove", updatePosition, false);
  }
}  

Ѐункция updatePosition () обновляСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ мяча Π½Π° холстС ( x ΠΈ y ), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ инструкции if () , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π΅ ΠΎΡ‚ΠΎΡˆΠ΅Π» Π»ΠΈ мяч ΠΎΡ‚ ΠΊΡ€Π°Π΅Π² холста.Если это Ρ‚Π°ΠΊ, ΠΎΠ½ заставляСт ΡˆΠ°Ρ€ ΠΎΠ±Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌΡƒ ΠΊΡ€Π°ΡŽ. Он Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ, Π±Ρ‹Π» Π»ΠΈ Ρ€Π°Π½Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π²Ρ‹Π·ΠΎΠ² requestAnimationFrame () , ΠΈ Ссли Π΄Π°, Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ снова ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ нСобходимости ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ canvasDraw () , которая обновляСт сцСну холста. Π’Π°ΠΊΠΆΠ΅ настроСн Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€ для записи Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ X ΠΈ Y Π½Π° экран для справки.

  var tracker = document.getElementById ('tracker');

var animation;
function updatePosition (e) {
  x + = e.movementX;
  Ρƒ + = Π΅.Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅Y;
  if (x> canvas.width + RADIUS) {
    x = -Π ΠΠ”Π˜Π£Π‘;
  }
  if (y> canvas.height + RADIUS) {
    y = -Π ΠΠ”Π˜Π£Π‘;
  }
  if (x <-RADIUS) {
    x = ΡˆΠΈΡ€ΠΈΠ½Π° холста + Π ΠΠ”Π˜Π£Π‘;
  }
  if (y <-RADIUS) {
    y = холст. высота + Π ΠΠ”Π˜Π£Π‘;
  }
  tracker.textContent = "ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ X:" + x + ", ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ Y:" + y;

  if (! animation) {
    animation = requestAnimationFrame (function () {
      анимация = ноль;
      canvasDraw ();
    });
  }
}  

Ѐункция canvasDraw () рисуСт мяч Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… полоТСниях x ΠΈ y :

  function canvasDraw () {
  ctx.fillStyle = "Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ";
  ctx.fillRect (0, 0, canvas.width, canvas.height);
  ctx.fillStyle = "# f00";
  ctx.beginPath ();
  ctx.arc (x, y, RADIUS, 0, degToRad (360), true);
  ctx.fill ();
}  

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° указатСля ΠΌΠΎΠΆΠ΅Ρ‚ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ iframe Π·Π° Ρ€Π°Π·. Если Π²Ρ‹ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ iframe, Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ iframe ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ Ρ†Π΅Π»ΡŒ; Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° указатСля ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого ограничСния, сначала Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠΉΡ‚Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ iframe, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠΉΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

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

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