[C++]sizeof()函数分析

 2024-02-23 02:03:33  阅读 0

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

字符

整数

短的

长的

漂浮

指针

32位

64位

4 或 8

【2】从数组中获取值

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

【3】union得到的值

由于联合中存在复制现象,联合结构的值为联合中最大元素的大小。 例如;

c语言sizeof函数的用法_sizeof c语言 64位_语言位格

union student{
    int id;
    double score;
}

这个并集中最大的元素是,所以它是8。

【4】 发现的值

不存在复制的情况,但是它的情况比较复杂,因为有填充的情况,比如下面的例子

struct stu{
    char s;
    int i;
}

它的大小不是简单的1+4=5,而是8。因为大小必须是最大成员的整数倍,所以如果有一个元素不需要最大元素那么大的空间,那么它就会为空。 所以上面例子的大小是8.下一个例子

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

虽然stu1和stu2的元素相同,但是顺序不同,由于填充的原因,第一个的大小是8字节,而第二个的大小是12字节。

【5】类对象的大小

【5.1】空类中没有任何函数。 它的物体的大小是多少?

size为1。之所以不为0是因为当我们声明一个对象时,系统需要给它分配资源,所以它一定不能为0。

【5.2】如果我们给空类添加一个构造函数和析构函数,那么它的大小是多少?

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

【5.3】如果是虚函数怎么办?

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

标签: sizeof size 解析函数

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码