打印

指针问题

[复制链接]
958|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

粉丝