程序员面试准备3---sizeof 测试



#include <iostream>
#include <string>
#include <cstddef>


using namespace std;


class B  
{  
private:  
      const int a;//只能在构造函数初始化列表中初始化  
      static int b;//在类的实现文件中定义并初始化  
      const static int c;//与 static const int c;相同。  
}; 


void tet(double pt[])
{
cout<<"pt 参数化:"<<sizeof(pt)<<endl;
}


static int si = 0;


int main()
{


/* 基本的数据结构:需要注意sizeof(指针)一般是编译平台位数;sizeof(数组)是有区分的*/


int ia;//定义在<cstddef>
ia = sizeof(ia);//ok
ia = sizeof ia;//ok
ia = sizeof si;//静态变量也可以取size of




ia = sizeof(int);//ok
int *pi = new int[12];
cout<< "pi:"<<sizeof(pi)<<"*pi:"<<sizeof(*(pi+12))<<endl;//pi:4 *pi:4 32位平台编译下指针大小为4位,64位平台下为8位


double pt[5];
cout<<"pt:"<<sizeof(pt)<<endl;//pt:40 需要注意的是在取sizeof的时候int a[]和int *a是不一样的;第一个表示一个指针常量,第二个是指针变量
cout<<"pt"<<sizeof(&pt)<<endl;//pt4   &pt指的是指针
tet(pt);// 数组在传参时均化为指针


int pg[] = {1,2,3};
cout<<"pg:"<<sizeof(pg)<<endl;//pt:12




float fa;
double db;
cout<<"fa"<<sizeof(fa)<<endl;// fa 32
cout<<"db"<<sizeof(db)<<endl;// fb 64 在32位和64位平台下,float都是32位,double是64位


/*结构体:结构体对齐规则,static成员变量不参与计算,空类为1,虚函数分配一个指针*/
typedef struct A
{
};


class C{
double t;
public:
virtual void f(){};
};


cout<<"empty struct:"<<sizeof(A)<<endl;//空类为1
cout<<"static struct:"<<sizeof(B)<<endl;//静态变量不参与计算
cout<<"virtual function struct:"<<sizeof(C)<<endl;


system("pause");


return 0;


}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值