Arc*_*rus 4 c++ pointers pointer-to-array
我知道这int (*p)[5]意味着一个指向5个int数组的指针.所以我在下面编写这个程序:
#include <iostream>
using namespace std;
int main()
{
int a[5]={0,1,2,3,4};
int (*q)[5]=&a;
cout<<a<<endl;
cout<<q<<endl;
cout<<*q<<endl;
cout<<**q<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在我的机器上,结果是:
0xbfad3608
0xbfad3608 //?__?
0xbfad3608
0
Run Code Online (Sandbox Code Playgroud)
我能理解这*q意味着地址 a[0]和**q意味着价值a[0],但为什么和?q有相同的价值?我心情不好,应该是他们的地址!我完全糊涂了.有人请帮帮我.请!a*q
这样看:
q == &a
*q == a
**q == *a
Run Code Online (Sandbox Code Playgroud)
你没有尝试打印&a.如果你这样做,你会发现它具有相同的价值a.自&a == a和,和q == &a,和*q == a,传递q == *q.
如果你想知道原因&a == a,请查看为什么数组变量的地址与它自己相同?
| 归档时间: |
|
| 查看次数: |
1473 次 |
| 最近记录: |