Забудьте о секунде о направленной аналогии. То, что действительно содержит указатель, - это адрес памяти. &
- это «адрес» оператора, то есть он возвращает адрес в памяти объекта. Оператор *
дает вам объект, на который ссылается указатель, то есть с указателем, содержащим адрес, он возвращает объект по этому адресу памяти. Итак, когда вы делаете *ipp = ip2
, то, что вы делаете, *ipp
, получает объект по адресу, хранящемуся в ipp
, который является ip1
, а затем присваивает ip1
значение, сохраненное в ip2
, которое является адрес j
.
Просто &
-> Адрес *
-> Значение в