常见sizeof统计

#i nclude "stdafx.h"
#i nclude   <iostream>  
#i nclude "string"

using namespace std;
class A
{
};

class B
{
 int a;
 static int c;
};
struct Strcut1
{
 int a;
 int* c;
};
int   main(int   argc,   char*   argv[])  
{  
 int Array[]={1,2,3};
 int *pInt;
//class
 cout<<" class:/n"<<sizeof(A)<<endl;//空类也有一个位置
 cout<<sizeof(B)<<endl;//static 不占类位置
//int
 pInt=Array;
 cout<<"  Int:/n"<<sizeof(Array)<<endl;//它与字符数组有区别,不会多一位'/0'
 cout<<sizeof(pInt)<<endl; //指针
// string
 string str("foobar");
 string *ps=&str;
 cout<<"  string:/n"<<sizeof(str)<<endl;//元素本身大小,与字符cbar不同
 cout<<sizeof(*ps)<<endl;//引用,与原类型一样大
 cout<<sizeof(ps)<<endl;//指针
//char
 char ch[]="Hello world";
 char *pCh="Hello world";
 cout<<"  char:/n"<<sizeof(ch)<<endl;//注意这里加一个位'/0'
 cout<<sizeof(pCh)<<endl;//指针
 cout<<sizeof(*pCh)<<endl;//一个元素,位置为1
 cout<<strlen(ch)<<endl;//没有统计'/0'
 cout<<strlen(pCh)<<endl;//与上面一样大
//type
 cout<<"  Type:/nShort*="<<sizeof(short*)<<endl;//指针
 cout<<"Short&="<<sizeof(short&)<<endl;//引用
 cout<<"Int*="<<sizeof(int*)<<endl;//指针
 cout<<"intt&="<<sizeof(int&)<<endl;//引用
 
 return   0;  
}  

再补一些:
     char *p;
    char *q[20];
    char *m[20][20];
    int (*n)[10];
    struct MyStruct
{
char dda;
double dda1;
int type ;
};
MyStruct k;

 printf("%d %d %d %d %d",sizeof(p),sizeof(q),sizeof(m),sizeof(n),sizeof(k));

答案:4,80,1600,4,24

第二个是指针数组,共20个指针,第三个也是,第四个是一个数组指针,第五个结构体,第二个是double类型,所以以8对齐,如果把int放在第二个,就是以4对齐。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值