我知道int (*p)[5]
是指一个指向5个整数的指针。 所以我的代码下面这个方案:为什么使用int(* p)[5]`的结果如此混乱?
#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;
}
在我的机器,结果是:
0xbfad3608
0xbfad3608 //?__?
0xbfad3608
0
我可以理解,*q
意味着a[0]
和**q
地址指的a[0]
价值,但为什么q
与a
和*q
具有相同的值?我头脑不好,应该是他们的地址!我完全困惑。有人请帮助我。请!
这是否意味着'&a == a ==&a [0]'? – zyc
@zyc,不,但他们都开始在同一个地址。 – avakar
是的,'&a == a ==&a [0]'。 –