关于编程语言:什么是指针?

What is a Pointer?

本问题已经有最佳答案,请猛点这里访问。

参见:理解指针

在许多C语言中,以及一些旧的语言,如Fortran,都可以使用指针。

作为一个真正用BASIC、JavaScript和ActionScript编程的人,你能向我解释什么是指针,什么是最有用的吗?

谢谢!


这篇维基百科文章将为您提供关于指针是什么的详细信息:

In computer science, a pointer is a programming language data type whose value refers directly to (or"points to") another value stored elsewhere in the computer memory using its address. Obtaining or requesting the value to which a pointer refers is called dereferencing the pointer. A pointer is a simple implementation of the general reference data type (although it is quite different from the facility referred to as a reference in C++). Pointers to data improve performance for repetitive operations such as traversing string and tree structures, and pointers to functions are used for binding methods in Object-oriented programming and run-time linking to dynamic link libraries (DLLs).


指针是包含另一个变量地址的变量。这允许您间接引用另一个变量。例如,在c中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 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
}


指针不像听起来那么硬。正如其他人已经说过的,它们是保存其他变量地址的变量。假设我想给你指路去我家。我不会给你我房子的照片,也不会给你我房子的比例模型;我只会给你地址。你可以从中推断出你需要什么。

同样,很多语言都区分了传递值和传递引用。基本上,这意味着每次我需要引用一个对象时,我都要传递一个完整的对象吗?或者,我把地址给别人,这样别人就可以推断出他们需要什么?

大多数现代语言通过找出指针何时有用并为您优化来隐藏这种复杂性。但是,如果您知道自己在做什么,手动指针管理在某些情况下仍然有用。


关于这个话题,有好几次讨论。您可以通过下面的链接找到有关主题的信息。关于这个问题还有其他几个相关的SO讨论,但我认为这些是最相关的。在搜索窗口中搜索"指针’),你也会得到更多的信息。

在C++中,我不能掌握指针和类。

现代的"参考"和传统的"指针"有什么区别?


正如已经提到的,指针是一个包含另一个变量地址的变量。

它主要用于创建新对象(在运行时)。