Вам необходимо помнить, что такое указатель - это просто обычная переменная , которая содержит адрес , так же, как char
содержит символьное значение. Этот адрес можно использовать для поиска другой переменной (с оператором *
).
Когда вы делаете char* pEmpty = new char
, вы даете pEmpty
значение, возвращаемое new char
, которое является адресом порции памяти, достаточно большой, чтобы содержать значение char. Затем вы используете *pEmpty
для доступа к этой памяти и присваиваете ей значение символа 'x'
.
Во втором примере вы пишете pEmpty = 'x'
- но помните, что pEmpty
является указателем , что означает, что он должен содержать адрес . 'x'
адрес? Нет, это буквальный символ! Так что эта строка на самом деле не имеет смысла.
В третьем примере вы присваиваете pEmpty
строковый литерал "x"
. Это адрес? Да, это. Литерал вычисляется по адресу этой постоянной строки.
Помните, что указатели - это совсем не то, на что они указывают. Их можно использовать для доступа к значению этого типа, но они совершенно другого типа.