【问题标题】:Pointers Basic : A simple query指针基础:一个简单的查询
【发布时间】:2015-10-28 21:32:42
【问题描述】:

我是 cpp 和学习指南的新手。在练习代码时,我遇到了这个。当我做&(一个指针)时,它给出了另一个内存位置。我想知道这个地址是什么。我假设它是保存 ptr 的位置。尽管它具有值变量的内存,但它必须保存在某个地方。

#include<iostream>
using namespace std;

int main()
{
  int v =6;
  int *ptr;

  ptr = &v;

  cout << "1: " << ptr << endl;

  cout << "2: " << *ptr << endl;

  cout << "3: " << &ptr << endl;

  return 0;

}

输出: 1:0x29cc6c

2:6

3: 0x29cc68

【问题讨论】:

  • 指针和其他变量一样是变量,变量具有唯一的地址,可以通过&amp; 运算符获得。所以在你的例子中没有发生任何奇怪的事情。

标签: c++ pointers


【解决方案1】:

正确。

输出1是指针的值,也就是它指向的地址。

输出 2 是“取消引用”的指针,这意味着它是输出 1 中包含的值(指针指向的位置)。

输出 3 是存储指针(包含输出 1 的值)的位置。

【讨论】:

    【解决方案2】:

    你完全正确:

    • v是一个变量,所以&amp;vv在内存中存放的地址;
    • ptr 也是一个变量,所以&amp;ptrptr 存储在内存中的地址。

    在您的示例中,由于这些变量一个接一个地存储(在本地堆栈上),因此它们的地址仅相隔 4 个字节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      • 2020-10-05
      • 2013-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多