【C++】sizeof()函数解析

发布时间:2020-08-21 22:48:42 作者:AlphaFan
来源:网络 阅读:889

【1】 常见数据类型的的sizeof函数得出的值表


charintshortlongfloatdouble指针
32 bit1424484
64 bit14 or 828488


【2】 数组求sizeof 的值

  数组的大小 = 数组中元素的个数 x 该类型的大小


【3】 union 求 sizeof 的值

  由于 union 中存在复写现象,union 结构的 sizeof 的值即为 union 中最大的元素的大小。例如;

union student{
    int id;
    double score;
}

  这个 union 中的最大的元素是double,所以它的 sizeof 就是8。


【4】 struct 中求 sizeof 的值

   struct 没有复写的情况,但是它的 sizeof 情况比较复杂,因为存在补位的情况,例如下面的例子

struct stu{
    char s;
    int i;
}

  它的大小不是简单的 1 + 4 = 5,而是8。因为 struct 的 size 一定是最大成员的整数倍,如果其中有元素不需要最大元素那么大的位置的话,就空着。所以上例的 struct 的大小为8。下一个例子

struct stu1{
    char a;
    char b;
    int c;
}

struct stu2{
    char a;
    int c;
    char b;
}

   虽然 stu1 和 stu2 的元素是一样的,只是顺序不一样,但是因为补位的原因,第一个的 size 为8字节,而第二个的 size 为 12 字节。


【5】 类对象的 sizeof 大小

  【5.1】 一个空类,里面任何函数也没有,它的对象的 size 是多少?

     大小为1。不是0的原因是当我们申明了一个对象的时候,系统就需要为其分配资源,所以一定不是0。

  【5.2】 如果我们在空类中加入了构造函数和析构函数,size 是多少?

    大小还是1,因为函数和对象是分离的。

  【5.3】 如果是虚函数呢?

    虚函数,每个类的对象中都会有一个指向虚函数的指针,所以大小要增加,在32位中,size为4个字节,在64位中为8个字节。 

推荐阅读:
  1. 如何用C++基于多态设计职工管理系统
  2. Java和C++通过new创建的对象有何区别?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++ c+

上一篇:Linux系统Java环境配置教程

下一篇:spring AOP自定义注解方式实现日志管理的实例讲解

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》