【发布时间】:2012-03-23 07:37:43
【问题描述】:
当 x 是 L 值(假设是变量)时,以下恒等式成立:
x == *(&x)
这很容易解释,因为 &x 是一个指向 x 的指针,应用于 &x 的解引用运算符 * 当然会返回 x。
现在我想知道反过来是否有意义。确切地说,我想知道是否
p == &(*p)
当 p 是非悬空指针时。 这似乎是有道理的,因为 *p 本身就是一个 L 值(一个具有地址的值),因为我们已经有了指向它的指针 (=adress) p。所以你只需要知道,这样的指针是唯一的,因为 &(*p) 没有其他机会成为 p。
因此,当两个恒等式都为真时,您可以说,在数学上,* 和 & 是彼此的反函数。
我说的对吗?此所谓的规则是否有任何可能的例外情况?
【问题讨论】:
-
如果
p不是指针,你不能做&(*p)。 -
...但问题已经说明,“当 p 是非悬空指针时。”
-
也许“伴随函子”比“逆”更合适,因为这两者在不同种类的事物上运行。
标签: c pointers reference dereference inverse