Оператор адреса (&)

Содержание

Слайд 2

Результат на моём компьютере: 7 0046FCF0

Результат на моём компьютере:
7
0046FCF0

Слайд 3

Оператор разыменования (*) Оператор разыменования (*) позволяет получить значение по указанному

Оператор разыменования (*)

Оператор разыменования (*) позволяет
получить значение по указанному адресу:

Результат на моём

компьютере:
7 0046FCF0 7
Слайд 4

Указатели Указатель — это переменная, значением которой является адрес (ячейка) памяти.

Указатели

Указатель — это переменная, значением которой является адрес (ячейка) памяти. Указатели объявляются

точно так же, как и обычные переменные, только со звёздочкой между типом данных и идентификатором:
Слайд 5

Как и обычные переменные, указатели не инициализируются при объявлении. Содержимым неинициализированного указателя является обычный мусор

Как и обычные переменные, указатели не инициализируются при объявлении. Содержимым неинициализированного

указателя является обычный мусор
Слайд 6

Присваивание значений указателю Поскольку указатели содержат только адреса, то при присваивании

Присваивание значений указателю

Поскольку указатели содержат только адреса, то при присваивании указателю

значения — это значение должно быть адресом. Для получения адреса переменной используется оператор адреса:
Слайд 7

Приведенное выше можно проиллюстрировать следующим образом Вот почему указатели имеют такое

Приведенное выше можно проиллюстрировать следующим образом

Вот почему указатели имеют такое имя: ptr содержит

адрес значения переменной value, и, можно сказать, ptr указывает на это значение.
Слайд 8

Ещё очень часто можно увидеть следующее: Результат на моём компьютере: 003AFCD4 003AFCD4

Ещё очень часто можно увидеть следующее:

Результат на моём компьютере:
003AFCD4 003AFCD4

Слайд 9

Следующее не является допустимым: Это связано с тем, что указатели могут

Следующее не является допустимым:

Это связано с тем, что указатели могут содержать

только адреса, а целочисленный литерал 7 не имеет адреса памяти.

C++ также не позволит вам напрямую присваивать адреса памяти указателю:

Слайд 10

Разыменование указателей Как только у нас есть указатель, указывающий на что-либо,

Разыменование указателей

Как только у нас есть указатель, указывающий на что-либо, мы

можем его разыменовать, чтобы получить значение, на которое он указывает. Разыменованный указатель — это содержимое ячейки памяти, на которую он указывает:
Слайд 11

Результат: 0034FD90 5 0034FD90 5

Результат:
0034FD90
5
0034FD90
5

Слайд 12

Вот почему указатели должны иметь тип данных. Без типа указатель не

Вот почему указатели должны иметь тип данных. Без типа указатель не

знал бы, как интерпретировать содержимое, на которое он указывает (при разыменовании). Также, поэтому и должны совпадать тип указателя с типом переменной. Если они не совпадают, то указатель при разыменовании может неправильно интерпретировать биты (например, вместо типа double использовать тип int).
Слайд 13

Одному указателю можно присваивать разные значения:

Одному указателю можно присваивать разные значения:

Слайд 14

Когда адрес значения переменной присвоен указателю, то выполняется следующее: ptr —

Когда адрес значения переменной присвоен указателю, то выполняется следующее:
   ptr — это

то же самое, что и &value;
   *ptr обрабатывается так же, как и value.
Поскольку *ptr обрабатывается так же, как и value, то мы можем присваивать ему значения так, как если бы это была бы обычная переменная. Например: