【1】常见数据类型函数导出的值表
字符
整数
短的
长的
漂浮
指针
32位
64位
4 或 8
【2】从数组中获取值
数组的大小 = 数组中元素的数量 x 类型的大小
【3】union得到的值
由于联合中存在复制现象,联合结构的值为联合中最大元素的大小。 例如;
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 个字节。