关于struct对齐的实验

实验环境:

win7 32位 vc++6.0


实验代码:

#include <iostream>

using namespace std;

struct A
{
	bool b;
	char c;
	short s;
	int i;
	long l;
	float f;
	double d;
	//extra
	bool e;
};

#pragma pack(push)
#pragma pack(1)

struct B
{
	bool b;
	char c;
	short s;
	int i;
	long l;
	float f;
	double d;
	// extra
	bool e;
};

struct C
{
	bool b;
	double d;
	float f;
	long l;
	int i;
	short s;
	char c;	
};

#pragma pack(pop)

struct D
{
	double d;
	float f;
	long l;
	int i;
	short s;
	char c;
	bool b;
};

int main(int argc, char* argv[])
{
	cout << "sizeof(short): " << sizeof(short) << endl;
	cout << "sizeof(int): " << sizeof(int) << endl;
	cout << "sizeof(long): " << sizeof(long) << endl;
	cout << "sizeof(float): " << sizeof(float) << endl;
	cout << "sizeof(double): " << sizeof(double) << endl;
	cout << "sizeof(char): " << sizeof(char) << endl;
	cout << "sizeof(bool): " << sizeof(bool) << endl;


	cout << "==================================" << endl;


	cout << "sizeof(A): " << sizeof(A) << endl;

	cout << "sizeof(B): " << sizeof(B) << endl;

	cout << "sizeof(C): " << sizeof(C) << endl;

	cout << "sizeof(D): " << sizeof(D) << endl;

	A array_A[10];

	B array_B[10];

	cout << "sizeof(array_A):" << sizeof(array_A) << endl;

	cout << "sizeof(array_B):" << sizeof(array_B) << endl;
	
	return 0;
}

实验结果:


实验要点:

1.可以通过#pragma pack(n)来设置struct以n字节对齐;

2.可以通过#pragma pack(push)与#pragma pack(pop)来设置struct字节对齐的有效范围;

3.通过array_B的实验,再次验证了数组是连续存储;

4.实验的基本数据结构中并没有包括C99中的long long


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值