sizeof()计算结构体的大小

运算符sizeof可以计算出给定类型的大小,对于32位系统来。

C语言中的构造数据类型有三种:数组、结构体共用体


数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素的个数。

结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。


程序实例解析如下:
#include <iostream>
using namespace std;
struct A
{ //上一个的偏移量+自身大小=自己的偏移量(补齐后)
char _iC1;//0=0
long _il;//0+1=1+3
char _iC2;//4+4=8 //结构体大小等于最后一个成员的偏移量加上其大小
double _id;//8+1=>9+7=16 =>16+8=24//所有成员大小的整数倍
};
//打乱顺序
struct B {
char _iC1;//0=0
char _iC2;//0+1=1
long _il;//1+1=>2+2=4
double _id;//4+4=8 =>8+8=16
};
//编译器在编译程序时会遵循两条原则:
//一、结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)
//二、结构体大小必须是所有成员大小的整数倍。
int main(){
cout<<sizeof(char)<<endl;//1
cout<<sizeof(short)<<endl;//2
cout<<sizeof(int)<<endl;//4
cout<<sizeof(long)<<endl;//4
cout<<sizeof(double)<<endl;//8

cout << "sizeof(A)=" <<sizeof(A) << endl;//24
cout << "sizeof(B)=" <<sizeof(B) << endl;//16

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值