C/C++语言sizeof相关计算

C语言中的sizeof操作符

注:本博客中的结果均是指运行在codeBlock16.01+window10上,sizeof显示的结果均是以字节为单位的。

  • 对数据类型使用sizeof
    sizeof(long long) -> 8
    sizeof(int) -> 4
    sizeof(char) -> 1
    sizeof(string) -> 4
    sizeof(float) -> 4
    sizeof(double) -> 8
  • 对数据类型指针使用sizeof
    sizeof(char *) -> 4
    sizeof(int *) -> 4
    sizeof(long long *) -> 4
    sizeof(float *) -> 4
    sizeof(double *) -> 4
    sizeof(string *) -> 4
  • 对数组使用sizeof
    int arr_a[10] ,sizeof(arr_a) -> 40
    char arr_b[10],sizeof(arr_b) -> 10
  • 对类class使用sizeof
    class A1
    {
    A();
    ~A(); //有无构造函数或者是其他复杂的构造函数结果都是 1 !
    static int x; //可以是int、long long、double、char…,注释掉这一行结果也是一样的。就是说static并没有增加类的存储空间
    };
    class A2
    {
    A();
    ~A();
    int x;
    };
    class A3
    {
    A();
    ~A();
    double x;
    };
    class A4
    {
    A();
    ~A();
    int x; //或者是char、double、string、long long(好像是有什么字节对齐的约束)
    double y;
    };
    sizeof(class A1) -> 1;sizeof(A2) -> 4;sizeof(A3) -> 8;sizeof(A4) -> 16

    以上仅仅是简单的对class使用sizeof的结果,有关虚类、虚继承的参考链接(在此对博主的好心分享表示感谢):http://blog.sina.com.cn/s/blog_728161840100u2ib.html
    http://blog.csdn.net/hairetz/article/details/4171769

    关于字节对齐的内容参考(在此对博主一并表示感谢):http://blog.csdn.net/hairetz/article/details/4084088

  • 对函数使用sizeof—取决于函数的返回类型
    void fun0(int x,int y)
    {
    int z = x+y;
    }
    char fun1(int x,int y)
    {
    return x+y;
    }
    int fun2(int x,int y)
    {
    return x+y;
    }
    double fun3(int x,int y)
    {
    return x+y;
    }
    long long fun4(int x,int y)
    {
    return x+y;
    }
    string fun5(int x,int y)
    {
    return “1+2”;
    }
    sizeof(fun0(1,2)) -> 1, sizeof(fun1(1,2)) -> 1 , sizeof(fun2(1,2)) -> 4 , sizeof(fun3(1,2)) -> 8 , sizeof(fun4(1,2)) -> 8 , sizeof(fun5(1,2)) -> 4.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值