【发布时间】: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