码迷,mamicode.com
首页 > 编程语言 > 详细

【三支火把】---# program (n)以及C语言字符对齐的总结

时间:2017-02-24 23:38:46      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:测试结果   nod   内存   字符对齐   语言   height   char   总结   结构体   

#pragma pack(n)

当n大于结构体中内存占用最大的变量内存时,将按照最大内存变量的字节占用数进行对齐,否则,就根据n进行对齐

情况一:

例一:

#pragma pack(4)

struct node{

int a;
char b;
char c;
};

struct node n;

printf("%d\n",sizeof(n));

结果:测试结果为6

例二:

#pragma pack(4)

struct node{

int a;
char b;
int c;

};

struct node n;

printf("%d\n",sizeof(n));

结果:测试结果为12

总结:例一中,a占4字节,b占1字节,由于b和c之和不满4字节,所以b和c共占用4个字节对齐。

例二中,a,b均一样,但是由于c占4字节,必须重新开辟4字节进行对齐,所以最终为12字节。

 

情况二:

#pragma pack(5)

struct node{

long a;
char b;
char c;
};

struct node n;

printf("%d\n",sizeof(n));

根据测试,最终结果为8,可见,是根于变量n的字节占用数进行对齐的。

 

【三支火把】---# program (n)以及C语言字符对齐的总结

标签:测试结果   nod   内存   字符对齐   语言   height   char   总结   结构体   

原文地址:http://www.cnblogs.com/szhb-5251/p/6440564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!