在许多C风格的语言和一些像Fortran这样的老语言中,可以使用指针。
作为一个只使用基本,javascript和actionscript编程的人,你能向我解释一下Pointer是什么,以及它最有用的是什么?
谢谢!
答案 0 :(得分:8)
此维基百科article将为您提供有关指针的详细信息:
在计算机科学中,指针是一种编程语言数据类型,其值直接指向(或“指向”)使用其地址存储在计算机存储器中其他位置的另一个值。获取或请求指针引用的值称为取消引用指针。指针是一般参考数据类型的简单实现(尽管它与C ++中称为引用的工具完全不同)。指向数据的指针可提高重复操作的性能,例如遍历字符串和树结构,指向函数的指针用于面向对象编程中的绑定方法和运行时链接到动态链接库(DLL)。
答案 1 :(得分:6)
指针是包含另一个变量地址的变量。这允许您间接引用另一个变量。例如,在C:
中// x is an integer variable
int x = 5;
// xpointer is a variable that references (points to) integer variables
int *xpointer;
// We store the address (& operator) of x into xpointer.
xpointer = &x;
// We use the dereferencing operator (*) to say that we want to work with
// the variable that xpointer references
*xpointer = 7;
if (5 == x) {
// Not true
} else if (7 == x) {
// True since we used xpointer to modify x
}
答案 2 :(得分:3)
指针并不像听起来那么难。正如其他人已经说过的那样,它们是包含其他变量地址的变量。假设我想告诉你我家的路线。我不会给你一张我房子的照片,或者我房子的比例模型;我只是给你一个地址。你可以从中推断出你需要的东西。
以同样的方式,许多语言区分传递值和传递引用。基本上它意味着我每次需要引用它时都会传递整个对象吗?或者,我是否只是给出它的地址,以便其他人可以推断出他们需要什么?
大多数现代语言通过弄清楚指针何时有用并为您优化指针来隐藏这种复杂性。但是,如果您知道自己在做什么,手动指针管理在某些情况下仍然有用。
答案 3 :(得分:1)
关于这个主题,SO有几个讨论。您可以通过以下链接找到有关该主题的信息。关于这个问题还有其他几个相关的SO讨论,但我认为这些是最相关的。在搜索窗口(或“指针[c]”)中搜索“指针[C ++]”,您也将获得更多信息。
In C++ I Cannot Grasp Pointers and Classes
What is the difference between modern ‘References’ and traditional ‘Pointers’?
答案 4 :(得分:-1)
正如某人已经提到的,指针是一个包含另一个变量地址的变量。
它主要用于创建新对象(在运行时)。