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

来源:互联网 发布:java魔法门2手机版攻略 编辑:程序博客网 时间:2024/06/15 03:56

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
原创粉丝点击