C++中结构体和类型的sizeof()

在C++中,如果定义一个空结构体或类型
struct A{};
class B{};
sizeof(A)和sizeof(B)都是1。因为编译器会为所有的结构体或类型的示例分配一个独立的地址,如果是空结构体或类型就会在其中自动加入一个char类型,用来给结构体或类型分配地址。

如果定义:
struct A{char a[3]};
classB{char a[3]};
sizeof(A)和sizeof(B)都是3.

如果定义:
struct A{short b;char a[3]};
classB{short b;char a[3]};
sizeof(A)和sizeof(B)都是6.

如果定义:
struct A{int b;char a[3]};
classB{int b;char a[3]};
sizeof(A)和sizeof(B)都是8.

如果定义:
struct A{long long b;char a[3]};
classB{long long b;char a[3]};
sizeof(A)和sizeof(B)都是16.
因为:为快速读取数据,编译器会以结构体或类中占用最大空间的数据类型的大小作为每次增加的最小单位。即对齐方式不同。

*所有基本数据类型中,long 和 指针根据机器位的不同在变化,当32位机时,long和指针都占4位字节;当64位机时,就都为8字节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值