Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² си ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: присваиваниС, Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΠΎ массивам / Π₯Π°Π±Ρ€

ОбъявлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ | Microsoft Learn

  • Π‘Ρ‚Π°Ρ‚ΡŒΡ
  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 3Β ΠΌΠΈΠ½

ОбъявлСниС указатСля ΠΈΠΌΠ΅Π½ΡƒΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ указатСля ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ пСрСмСнная. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, содСрТит адрСс памяти.

Бинтаксис

declarator:
 pointerΠ½Π΅ΠΎΠ±.direct-declarator

direct-declarator:
 identifier
 ( declarator )
 direct-declarator[constant-expressionopt]
 direct-declarator ( parameter-type-list )
 direct-declarator(identifier-listopt)

pointer:
 *type-qualifier-listΠ½Π΅ΠΎΠ±.
 *type-qualifier-listΠ½Π΅ΠΎΠ±.pointer

type-qualifier-list:
 type-qualifier
 type-qualifier-list type-qualifier

Π·Π°Π΄Π°Π΅Ρ‚ type-specifier Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ, Ρ‚ΠΈΠΏΠΎΠΌ структуры ΠΈΠ»ΠΈ объСдинСния. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ указатСля Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, массивы ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ указатСлям. (Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± объявлСнии ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ слоТных Ρ‚ΠΈΠΏΠΎΠ² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ Π±ΠΎΠ»Π΅Π΅ слоТных Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ².)

Боздавая type-specifiervoid, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΈΠΏΠ°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π­Ρ‚ΠΎΡ‚ элСмСнт называСтся «ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° void » ΠΈ записываСтся ΠΊΠ°ΠΊ void *. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ, объявлСнная ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° void , ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для указания Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ любого Ρ‚ΠΈΠΏΠ°. Однако для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‚ΠΈΠΏ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ явно Π·Π°Π΄Π°Π½ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. (ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° char * ΠΈ Ρ‚ΠΈΠΏΠ° void * совмСстимы с присваиваниями Π±Π΅Π· привСдСния Ρ‚ΠΈΠΏΠΎΠ².) Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ привСдСния Ρ‚ΠΈΠΏΠ°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ привСдСния Ρ‚ΠΈΠΏΠΎΠ².

ΠœΠΎΠΆΠ΅Ρ‚ type-qualifier Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ const , Π»ΠΈΠ±ΠΎ volatile, Π»ΠΈΠ±ΠΎ ΠΈ Ρ‚ΠΎ, ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π­Ρ‚ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, соотвСтствСнно, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ (const), ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ процСссом, Π½Π΅ зависящим ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (volatile). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… словах const ΠΈ volatile см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠšΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Ρ‚ΠΈΠΏΠΎΠ².

Имя declarator ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ°. НапримСр, Ссли declarator прСдставляСт массив, Ρ‚ΠΈΠΏ указатСля измСняСтся Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° массив.

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

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

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ объявлСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

char *message; /* Declares a pointer variable named message */

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ message ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с char Ρ‚ΠΈΠΏΠΎΠΌ .

int *pointers[10];  /* Declares an array of pointers */

Массив pointers содСрТит 10 элСмСнтов; ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ с

int Ρ‚ΠΈΠΏΠΎΠΌ .

int (*pointer)[10]; /* Declares a pointer to an array of 10 elements */

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ pointer ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° массив с 10 элСмСнтами. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Π² этом массивС ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int .

int const *x;      /* Declares a pointer variable, x,
                      to a constant value */

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ x ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠ΅ int Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚.

const int some_object = 5 ;
int other_object = 37;
int *const y = &fixed_object;
int volatile *const z = &some_object;
int *const volatile w = &some_object;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ y Π² этих ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½ΠΈΡΡ… ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ постоянный ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π°

int Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, Π½ΠΎ сам ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ располоТСниС: адрСс fixed_object. Аналогичным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ являСтся z ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ константы, Π½ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ для указания Π½Π° int ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ , Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. ΠžΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒ volatile ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, хотя Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ const int ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° , Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ z , Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ процСссом, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΌΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ. ОбъявлСниС w ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΈ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

struct list *next, *previous; /* Uses the tag for list */

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ указатСля (next ΠΈ previous), ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° Ρ‚ΠΈΠΏ listструктуры . Π­Ρ‚ΠΎ объявлСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ list Ρ‚ΠΈΠΏΠ° структуры (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€), Ссли list ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈ объявлСниС.

struct list
{
    char *token;
    int count;
    struct list *next;
} line;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ line ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ структуры с ΠΈΠΌΠ΅Π½Π΅ΠΌ list. Π’ΠΈΠΏ list структуры состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° char Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Ρ‚ΠΎΡ€ΠΎΠΉ β€” int Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ β€” ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ list структуру.

struct id
{
    unsigned int id_no;
    struct name *pname;
} record;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ

record ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ idструктуры . pname ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚ΠΈΠΏ структуры с ΠΈΠΌΠ΅Π½Π΅ΠΌ name. Π­Ρ‚ΠΎ объявлСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ name Ρ‚ΠΈΠΏΠ°.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅

Π”Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² C++

Админ сайта Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° C++ ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΎΠ²: 454

User Rating:Β 0Β /Β 5

Π Π΅ΠΉΡ‚ΠΈΠ½Π³

(0)

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ с Π²Π°ΠΌΠΈ рассмотрим понятиС указатСля в языкС C++. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (Π°Π½Π³Π». pointer) Π² C++ — это пСрСмСнная, которая содСрТит адрСс памяти Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Как ΠΈ любая другая пСрСмСнная, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ сначала объявлСн ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ Π½Π°Ρ‡Π½Ρ‘Ρ‚Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ символ «Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ» ( * ), ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ послС Ρ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ пСрСмСнная-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.Β 

Π”Π°Π²Π°ΠΉΡ‚Π΅ сразу посмотрим Π½Π° нСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования указатСля Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° C++, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΡΠ½ΠΈΡ‚ΡŒ всё Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅:

#include <iostream>

using namespace std;

int main() {
    // объявляСм Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ a, b ΠΈ c
    int a = 10, b = 20, c = 30;

    // объявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ p
    int* p;

    // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° экран консоли значСния всСх Ρ‚Ρ€Ρ‘Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…
    cout << "The value of 'a' is: " << a << endl;
    cout << "The value of 'b' is: " << b << endl;
    cout << "The value of 'c' is: " << c << endl;

    // присваиваСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса памяти, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a
    p = &a;
    cout << "Pointer address is currently " << p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля (это адрСс памяти для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a)
    cout << "Pointer value is currently " << *p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "содСрТимого" ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ адрСсу памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ сСйчас p

    // присваиваСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса памяти, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ b
    p = &b;
    cout << "Pointer address is currently " << p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля (это адрСс памяти для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ b)
    cout << "Pointer value is currently " << *p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "содСрТимого" ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ адрСсу памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ сСйчас p

    // присваиваСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса памяти, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ хранится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ c
    p = &c;
    cout << "Pointer address is currently " << p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля (это Π±ΡƒΠ΄Π΅Ρ‚ адрСс памяти для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ c)
    cout << "Pointer value is currently " << *p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "содСрТимого" ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ адрСсу памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ сСйчас p
}

Π― ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ снабдил ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° коммСнтариями, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая строка Π±Ρ‹Π»Π° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ понятна, Π½ΠΎ всё ΠΆΠ΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²Π»ΡŽΡΡŒ Π½Π° ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Ρ… этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π’Π½Π°Ρ‡Π°Π»Π΅ ΠΌΡ‹ объявили Ρ‚Ρ€ΠΈ цСлочислСнных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ a, b ΠΈ c, ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² ΠΈΡ… значСниями 10, 20 ΠΈ 30, соотвСтствСнно. Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ объявили ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ p. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π² Π΅Ρ‘ объявлСнии ΡƒΠΊΠ°Π·Π°Π½ Ρ‚ΠΈΠΏ int*, Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ «ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int». Как ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π² объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ p

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

Π”Π°Π»ΡŒΡˆΠ΅ ΠΌΡ‹ просто Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ значСния Π½Π°ΡˆΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… a, b ΠΈ c Π½Π° экран консоли. Π­Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ доступа ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ нашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля p. ПослС этого ΠΌΡ‹ присваиваСм нашСй ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ p Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a:

p = &a;

Π­Ρ‚ΠΈΠΌ присвоСниСм ΠΌΡ‹ ΠΊΠ°ΠΊ Π±Ρ‹ «Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Π΅ΠΌ» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ p Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»Π° Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ a. Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄ΡƒΡ‚ Π΄Π²Π΅ интСрСсных строки с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π½Π° консоль, Π³Π΄Π΅ ΠΌΡ‹ Π²Π½Π°Ρ‡Π°Π»Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ содСрТимоС самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ p, Π° послС этого обращаСмся ΠΊ содСрТимому ячСйки памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ p посрСдством указания символа-Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΈ ΠΏΠ΅Ρ€Π΅Π΄ p, Ρ‚.Π΅. *p:

    cout << "Pointer address is currently " << p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля (это адрСс памяти для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ a)
    cout << "Pointer value is currently " << *p << endl; // Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "содСрТимого" ΠΏΠΎ Ρ‚ΠΎΠΌΡƒ адрСсу памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ сСйчас p

Вакая запись *p называСтся Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ указатСля.

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

ΠžΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π΅Π»Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ «ΠΏΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΡƒ» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля p Π½Π° Π΄Π²Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ b ΠΈ c ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран консоли значСния адрСсов этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ значСния самих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

ПослС запуска этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρƒ мСня Π½Π° экранС консоли ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΠ»ΠΎΡΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

The value of 'a' is: 10
The value of 'b' is: 20
The value of 'c' is: 30
Pointer address is currently 00CFF91C
Pointer value is currently 10
Pointer address is currently 00CFF910
Pointer value is currently 20
Pointer address is currently 00CFF904
Pointer value is currently 30

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π² ΠΌΠΎΡ‘ΠΌ случаС адрСса памяти для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… a, b ΠΈ c

Ρ€Π°Π²Π½Ρ‹Β 00CFF91C,Β 00CFF910 ΠΈΒ 00CFF904, соотвСтствСнно (Ρƒ вас ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈ скорСС всСго Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ, это Π½Π΅ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ). Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ пСрСнастройки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля ΠΏΡ€ΠΈΒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ указатСля p ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ доступ ΠΊ самим значСниям этих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ выводятся Π½Π° экран консоли.

НапослСдок Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΆΠ½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² языкС C++:

  • ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ всСгда Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс памяти, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Π° Π½Π΅ сами Π΄Π°Π½Π½Ρ‹Π΅.
  • Для объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π·Π°Ρ‚Π΅ΠΌ символ-Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΡƒ ( * ) ΠΈ послС этого имя самой ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ x Π½Π° Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… char, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запись: char* x;
  • Для разымСнования указатСля примСняСтся символ-Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠ° ( * ), ΠΈΠ΄ΡƒΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля. НапримСр, Ссли ваша пСрСмСнная-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ имя x, Ρ‚ΠΎ Π΅Ρ‘ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ записываСтся ΠΊΠ°ΠΊ *x
  • Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ссылка ( с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ & ) Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Π’Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Ссли Ρƒ вас ΡƒΠΆΠ΅ Π±Ρ‹Π»Π° ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π°Β Π΄Ρ€ΡƒΠ³Π°Ρ пСрСмСнная с ΠΈΠΌΠ΅Π½Π΅ΠΌ y, ΠΈ Π΅Ρ‘ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… char, Ρ‚ΠΎΒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ x ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: x = &y;
  • НС ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒΒ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΡΡ‚ΠΈ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ-указатСля ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ присвоитС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ адрСса ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ объявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ упраТнСния для закрСплСния Ρ‚Π΅ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² языкС C++:

  • ΠžΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Π² своСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x, y ΠΈ z с Ρ‚ΠΈΠΏΠΎΠΌ double. ΠŸΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ… ΠΊΠ°ΠΊΠΈΠΌΠΈ-Ρ‚ΠΎ значСниями Π½Π° свой вкус. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚Π΅ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…-указатСля с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ px, py, pz ΠΈ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΈΡ… Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΈ Π½Π° x, y ΠΈ z, соотвСтствСнно. Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ значСния ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ px, py, pz (адрСса памяти) Π½Π° экран консоли. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π° консоль значСния самих ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x, y ΠΈ z с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ  доступа ΠΊ Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈΒ px, py ΠΈ pzΒ ΠΈ ΠΈΡ… Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅. ПослС этого присвойтС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ pz адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x, Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ px присвойтС адрСс ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ z. Π’Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π° экран консоли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ разымСнования для px ΠΈ pz.
  • C++
  • ΠžΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ C++
  • Назад
  • Π’ΠΏΠ΅Ρ€Π΅Π΄

go — Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ интСрфСйса

Π—Π°Π΄Π°Π²Π°Ρ‚ΡŒ вопрос

спросил

ИзмСнСно 3 Π³ΠΎΠ΄Π°, 3 мСсяца Π½Π°Π·Π°Π΄

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

Π’Ρ€ΡƒΠ΄Π½ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ, Π½ΠΎ ΠΊΠ°ΠΊ я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ , Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ интСрфСйс?


Рассмотрим ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅:

 основной ΠΏΠ°ΠΊΠ΅Ρ‚
Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (
    "ЀМВ"
    "нСбСзопасно"
)
Ρ‚ΠΈΠΏ Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹ΠΉ интСрфСйс {
    ΠŸΡ€ΠΈΠΌΠ΅Ρ€()
}
Π²Π²Π΅Π΄ΠΈΡ‚Π΅ структуру StructThatImplementsInterface {
}
func (i *StructThatImplementsInterface) ΠŸΡ€ΠΈΠΌΠ΅Ρ€() {
}
Π²Π²Π΅Π΄ΠΈΡ‚Π΅ структуру StructThatHasInterface {
    я Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ
}
основная функция () {
    sameInterface := &StructThatImplementsInterface{}
    struct1 := StructThatHasInterface{i: Ρ‚ΠΎΡ‚ ΠΆΠ΅Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ}
    struct2 := StructThatHasInterface{i: Ρ‚ΠΎΡ‚ ΠΆΠ΅Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ}
    ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь(&struct1)
    ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь(&struct2)
}
func TheProblemIsHere(s *StructThatHasInterface) {
    fmt. Printf("Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ Printf: %p \n", s.i)
    fmt.Printf("Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ Usafe: %v \n", unsafe.Pointer(&s.i))
}
 

https://play.golang.org/p/HoC5_BBeswA


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚:

 Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ Printf: 0x40c138
Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ Usafe: 0x40c140
Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ Printf: 0x40c138
Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ Usafe: 0x40c148
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Printf ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Π° StructThatHasInterface ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ sameInterface ). Однако unsafe.Pointer() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹Π΅ значСния.

Как я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Ρ‡Ρ‚ΠΎ ΠΈ Printf Π±Π΅Π· использования fmt , Π° ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ?

  • go
  • нСбСзопасныС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ

4

Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ вСрсии Go Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ интСрфСйса состоит ΠΈΠ· Π΄Π²ΡƒΡ… слов. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ хранится Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ словС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ слово ΠΊΠ°ΠΊ uintptr :

 u := (*[2]uintptr)(unsafe.Pointer(&s.i))[1]
 

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ нСбСзопасСн ΠΈ Π½Π΅ гарантируСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ способ получСния указатСля:

 u := Reflect.ValueOf(s.i).Pointer()
 

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

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

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

Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ

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

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

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

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

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

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

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π² macOS β€” Apple Podpora (SI)

Π‘Ρ‚Ρ€Π΅Π»ΠΊΠ°

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

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

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Ρ†Π²Π΅Ρ‚ указатСля. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ мСню Apple > «БистСмныС настройки», Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π£Π½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΉ доступ» Π½Π° Π±ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«Π­ΠΊΡ€Π°Π½Β» справа, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ настройки Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΒ». (Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ придСтся ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠ·.)

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ настройки дисплСя для ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй для мСня

Poof

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСтаскиваСмый элСмСнт исчСзнСт, ​​когда Π²Ρ‹ отпуститС ΠΊΠ½ΠΎΠΏΠΊΡƒ. Если элСмСнт являСтся псСвдонимом, Π΅Π³ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π» Π½Π΅ удаляСтся.

ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

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

ПсСвдоним

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ‰Π΅Π»ΠΊΠ°Π΅Ρ‚Π΅ элСмСнт, удСрТивая клавиши Option-Command, ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ пСрСтаскивании элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ создан псСвдоним для элСмСнта.

Двутавровая Π±Π°Π»ΠΊΠ°

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΈ вставкС тСкста.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚ΠΈΠ΅

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ области Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Π£ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π°Ρ Ρ€ΡƒΠΊΠ°

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ΡˆΠΈ находится Π½Π°Π΄ ссылкой Π½Π° Π²Π΅Π±-страницу, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ элСмСнт.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Π°Ρ Ρ€ΡƒΠΊΠ°

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

Закрытая Ρ€ΡƒΠΊΠ°

ΠŸΠΎΡΠ²Π»ΡΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚Π΅ ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ элСмСнт Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСкст Π² ячСйкС элСктронной Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π»Π΅Π²ΠΎ

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ боковая панСль, панСль инструмСнтов, ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Π²Π»Π΅Π²ΠΎ.

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

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΎΠΊΠΎΠ²ΡƒΡŽ панСль, панСль инструмСнтов, ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²ΠΏΡ€Π°Π²ΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ

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

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π²Π΅Ρ€Ρ…

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΎΠΊΠΎΠ²ΡƒΡŽ панСль, панСль инструмСнтов, ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠ·

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΎΠΊΠΎΠ²ΡƒΡŽ панСль, панСль инструмСнтов, ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π½ΠΈΠ·.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΠΎΠΊΠΎΠ²ΡƒΡŽ панСль, панСль инструмСнтов, ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ·.

ΠŸΠ΅Ρ€Π΅ΠΊΡ€Π΅ΡΡ‚ΠΈΠ΅ Π²Ρ‹Π±ΠΎΡ€Π° снимка экрана

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² снимок экрана.

Π‘ΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚ ΠΎΠΊΠ½Π° ΠΈ мСню ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π° снимкС экрана Π±ΡƒΠ΄Π΅Ρ‚ всС ΠΎΠΊΠ½ΠΎ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² мСню.

Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ пСрСтаскиваСмый элСмСнт Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ мСстополоТСниС.

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

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

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

© 2019 Π¨Ρ‚ΠΈΡ€Π»ΠΈΡ† Π‘Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Ρ‹Ρ… салонов Π² ΠŸΠ΅Ρ€ΠΌΠΈ

Цифровая ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ, Ρ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈ Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², сканированиС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ризография Π² ΠŸΠ΅Ρ€ΠΌΠΈ.