编译器的对齐方式

#include <stdio.h>
//用来指定结构体(联合)中对齐的字节数,即按多少字节对齐,如果不指定,则结构体按照最大的数据成员的长度进行对齐,
//如果指定了,为n,若n大于等于结构体中最大数据成员的长度,则n无效,按照最大数据长度对齐,若n小于最大数据成员长度
//则按照n个字节进行对齐,及数据成员长度大于等于n的成员,地址必须是n的整数倍,长度小于n的无限制
//注意,此预编译指令只对结构体(联合)数据成员有效,对外部的数据类型无效,详见36-39行
#pragma pack(2)

typedef struct test
{
	char a;
	int b;
	short c;
}Test;

typedef struct test2
{
	char a;
}Test2;

int main()
{
	Test temp;	
	char * p = (char *)&temp.a;
	printf("p = %p\n", p);
	p = (char*)&temp.b;
	printf("p = %p\n", p);
	p = (char *)&temp.c;
	printf("p = %p\n", p);
	printf("struct size is %d\n", sizeof(Test));
	printf("struct2 size is %d \n", sizeof(Test2));
	char j, k;
	double a = 12, b = 213.123, c = 2131.123;
	int i;
	printf(" p = %p\n", &j);
	printf(" p = %p\n", &k);
		printf(" p = %p\n", &a);
		printf(" p = %p\n", &b);
		printf(" p = %p\n", &c);
		printf(" p = %p\n", &i);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值