&score
- это тип значения "указатель на int".prvalue означает «чисто значение, которое может находиться справа от оператора присваивания».
int* score_ptr
является lvalue типа «указатель на int».Это означает, что он может идти с левой стороны оператора присваивания.
Разница в том, что один является значением , который не имеет идентичности, другой является переменной у которого есть личность.
Вы не можете сделать &&score
, но вы можете сделать &score_ptr
.Вы можете назначить на score_ptr
, вы не можете назначить на &score
.
Указатель похож на лист бумаги с написанным на нем уличным адресом.Значение - это уличный адрес.
Переменная-указатель - это уличный адрес, на котором есть лист бумаги, где указано, * другой адрес улицы.
Предположим, куда вы идетепереезды каждые 4 месяца;Может быть, вы студент кооператива в университете.Предоставление кому-либо вашего текущего адреса - пустая трата времени, так как через несколько месяцев он станет мусором.Предоставление им адреса ваших родителей и пересылка вам ваших писем имеет больше смысла.
Здесь вы живете в int
.Если вы скажете кому-то адрес своего родителя - адрес переменной типа int*
- они могут отправлять вам вещи даже после того, как вы переместитесь.