Когда x является L-значением (скажем, переменная), то имеет место следующее тождество:
x == * (& x)
Это довольно легко объяснить, потому что & x является указателем на x и оператор разыменования *, примененный к & x, тогда, конечно, вернет x.
Теперь мне интересно, имеет ли смысл обратное. Если быть точным, мне интересно, если
p == & (* p)
, когда p - неискаженный указатель.
Кажется, это имеет смысл, потому что * p само по себе является L-значением (значением, имеющим адрес), потому что у нас уже есть указатель (= адрес) p на него. Так что вам нужно только знать, что такие указатели уникальны, потому что тогда & (* p) не имеет другого шанса стать p.
Так что, когда обе идентичности истинны, вы можете сказать, что математически * и & являются обратными функциями друг от друга.
Я прав? Существуют ли возможные исключения из этих предполагаемых правил?