sizeof以及乱七八糟的指针

 sizeof以及乱七八糟的指针  
下面的输出是?

double* (*a)[3][6];
 cout<<sizeof(a)<<endl;  
 cout<<sizeof(*a)<<endl;
 cout<<sizeof(**a)<<endl;
 cout<<sizeof(***a)<<endl;
 cout<<sizeof(****a)<<endl;

看见类似“double* (*a)[3][6]; ”的语句,把“(*a)”这一部分看作一个整体,不妨计为A,则a就是指向A的指针,则原语句“double* (*a)[3][6]; ”可以看作“double* A[3][6]; ”,于是A就表示一个二维数组,数组的元素为double*类型。那么a就是指向A的指针。分析得出有如下结果:(注意,sizeof作用于一个数组的时候,结果是该数组所占字节数的大小,不是数组元素的个数,也不能把数组名作为指针来看,否则指针的大小为4,输出就为4了)

double* (*a)[3][6];
cout<<sizeof(a)<<endl; -----  4 :a是一个指针,所以大小为4
cout<<sizeof(*a)<<endl;----- 72 :4*3*6 ,a指向一个2维数组,而数组中的元素也是指针
cout<<sizeof(**a)<<endl; ----- 24 :4*6,数组的第2维的大小
cout<<sizeof(***a)<<endl; ----- 4 :数组中元素的大小
cout<<sizeof(****a)<<endl;----- 8 :数组中元素指向内容为double,所以8

再看一个:
char sa[1000] = "abcdef";
 char* sb = "asdassaasabcdeft";
 const char* sc = "aaaaaaaaaaaaaaaaaaaa";
 cout<<"sizeof(sa):"<<sizeof(sa)<<endl;
 cout<<"sizeof(sb):"<<sizeof(sb)<<endl;
 cout<<"sizeof(sc):"<<sizeof(sc)<<endl;
 cout<<"sizeof('abcdefghijklmn'):"<<sizeof("abcdefghijklmn")<<endl;

sa是数组,输出数组大小1000
sb,sc都是指针,输出大小4
sizeof(“abcdefghijklmn”)输出字符串的大小
输出结果如下:
sizeof(sa):1000
sizeof(sb):4
sizeof(sc):4
sizeof('abcdefghijklmn'):15

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值