【问题标题】:Assigning a Pointer through a Double Pointers通过双指针分配指针
【发布时间】:2018-08-22 11:04:10
【问题描述】:
int m = 5, n = 6;
int *p,*q,**r;
p = &n, q = &n;
r = &p;
cout<<m<<n<<*p<<*q<<**r; \\Gives output 56666
*r = &m;
cout<<m<<n<<*p<<*q<<**r;  \\Gives output 56665

输出不应该是56565吗,当你给*r = &m时,p得到m的地址,*p应该打印m的值(5)?

【问题讨论】:

  • C# 和 C 不是同一种语言。请尽量只使用与您的问题相关的标签。
  • 说到相关标签...我认为您的意思是标记 C++。
  • 是的,我的错。我的意思是添加 C++。
  • 说到你的例子。您是否真的编译并运行了您发布的代码?对于一个 cmets 是用 // 制作的,而不是 \\ 。此外,您将所有内容打印在一行上。所以这不会产生两条不同的线。最后,当我修复了这些错误时。我得到了预期的结果。 coliru.stacked-crooked.com/a/a13ef45d32b36202
  • 我得到了预期的 56565 ideone.com/A8elMA 你是怎么想出 56665 的?什么编译器/平台?

标签: c++ pointers double-pointer


【解决方案1】:

输出不应该是56565吗,当你给*r = &m时,p得到m的地址,*p应该打印m的值(5)?

是的,应该;你的推理是正确的。此外,output is 56565 应该是这样的。

【讨论】:

    【解决方案2】:

    这就是指针的工作方式。

    如果r=&amp;p 并且你设置*r=&amp;m 它与p=&amp;m 完全相同。

    【讨论】:

      猜你喜欢
      • 2020-04-19
      • 2021-12-11
      • 2015-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 2022-01-06
      相关资源
      最近更新 更多