代码示例:
int x = 10;
int *p = &x; // reference - получение адреса объекта x
int y = *p; // dereference - получение объекта по указателю p
在许多俄语书籍中,在翻译取消引用时,使用了“取消引用”一词。据我了解,“取消引用”一词的含义是命名。但在这里似乎没有人被剥夺名字。
我遇到的另一个翻译版本是“去除间接性”。这个版本的意思更接近原版。
那么为什么要“取消引用”呢?
事实上,翻译是绝对正确的。走着瞧吧:
任何编程语言中的任何对象都由两个不可分割的实体组成:
在 C 等许多编程语言中,并没有强调这些实体之间的区别。例如,在许多语言中,您可以编写如下内容:
在这里,相同的词位“a”用于不同的含义。在右边 - 作为一个值,在左边 - 作为一个名称。初级程序员通常没有意识到这一点。一些语言明确区分了这种区别。例如,在 Shell 语言中,变量名可以是“A”,值可以是“${A}”。
回到你的问题。许多编程语言都有一种特殊类型的变量,其值是其他变量的名称。毕竟,什么是链接(指针)?这是机器地址 - 包含值的单元格的名称。
因此,“取消引用”的意思是告诉处理器给定变量的值应该转换为其他变量的名称。像这样:
结果很明显。事实上,我们告诉处理器: