代码之家  ›  专栏  ›  技术社区  ›  defmeta

什么是指针?[副本]

  •  4
  • defmeta  · 技术社区  · 18 年前

    见: Understanding Pointers


    在许多C风格的语言中,以及一些较旧的语言(如Fortran)中,可以使用 指针

    作为一个只使用basic、javascript和actionscript编程的人,你能向我解释一下指针是什么,它最有用的是什么吗?

    谢谢

    5 回复  |  直到 6 年前
        1
  •  9
  •   David Segonds    18 年前

    这是维基百科 article 将为您提供有关指针是什么的详细信息:

    在计算机科学中,指针是一种编程语言数据类型,其值直接引用(或“指向”)使用其地址存储在计算机内存其他位置的另一个值。获取或请求指针引用的值称为取消指针引用。指针是通用引用数据类型的简单实现(尽管它与C++中称为引用的工具有很大不同)。指向数据的指针提高了重复操作(如遍历字符串和树结构)的性能,指向函数的指针用于面向对象编程中的绑定方法以及到动态链接库(DLL)的运行时链接。

        2
  •  7
  •   Douglas Mayle    18 年前

    指针是包含另一个变量地址的变量。这允许您间接引用另一个变量。例如,在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
    }
    
        3
  •  4
  •   JosephStyons    18 年前

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

    同样,许多语言都区分了按值传递和按引用传递。从本质上讲,这意味着每次我需要引用一个完整的对象时,我会传递它吗?或者,我会给出它的地址,以便其他人可以推断出他们需要什么?

        4
  •  1
  •   Community Mohan Dere    9 年前

    关于这个话题,在SO中进行了多次讨论。您可以通过下面的链接找到有关该主题的信息。关于这个问题还有其他一些相关的讨论,但我认为这些是最相关的。在搜索窗口中搜索“指针[C++]”(或“指针[C]”),您也将获得更多信息。

    In C++ I Cannot Grasp Pointers and Classes

    What is the difference between modern ‘References’ and traditional ‘Pointers’?

        5
  •  -1
  •   Mosty Mostacho    13 年前

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