#include <iostream>
using namespace std;
int main(void)
{
int a[3][2]={(0,1),(2,3),(4,5)};
int *p;
p=a[0];
cout<<sizeof(a)<<endl;//24
cout<<sizeof(&a)<<endl;//24
cout<<sizeof(a[0])<<endl;//8
cout<<sizeof(&a[0])<<endl;//4
cout<<p[0]<<endl;//1
int b[2]={1,2};
cout<<sizeof(b)<<endl;//8
cout<<sizeof(&b)<<endl;//8
return 0;
}
问题:
1.cout<<sizeof(&a)<<endl;//24
cout<<sizeof(&b)<<endl;//8而cout<<sizeof(&a[0])<<endl;为什么不等于8?vs2005结果是4
2.&a的两种解释:
1)a的代表数组,&a是取地址
2)&a是指针的指针(a代表数组元素的首地址,再取首地址的地址)。
请问那种解释正确,他们之间有联系吗? |