【问题标题】:What is a Pointer? [duplicate]什么是指针? [复制]
【发布时间】:2010-09-14 07:26:05
【问题描述】:

见:Understanding Pointers


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

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

谢谢!

【问题讨论】:

    标签: programming-languages pointers language-features


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      指针是一个包含另一个变量地址的变量。这允许您间接引用另一个变量。例如,在 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】:

        在 SO 中已经有几个关于这个话题的讨论。您可以通过以下链接找到有关该主题的信息。关于这个主题还有其他几个相关的 SO 讨论,但我认为这些是最相关的。在搜索窗口中搜索“pointers [C++]”(或“pointers [c]”),您还将获得更多信息。

        In C++ I Cannot Grasp Pointers and Classes

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 2012-03-27
            • 2016-09-25
            • 2013-06-27
            • 2014-06-25
            • 2012-01-21
            • 2011-05-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多