指针问题

[复制链接]
1349|2
 楼主| sinadz 发表于 2013-1-30 12:44 | 显示全部楼层 |阅读模式
#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代表数组元素的首地址,再取首地址的地址)。
请问那种解释正确,他们之间有联系吗?
秋天落叶 发表于 2013-1-30 12:53 | 显示全部楼层
分清“数组对象”与“指针对象”。
hsbjb 发表于 2013-1-30 13:28 | 显示全部楼层
有说明的.
&a 编译器会看做指针的,sizeof操作的时候.返回指针这个类型的大小...
而在使用sizeof操作符的时候,当该操作符是对数组操作的时候,会返回数组的大小....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部