结构体大小计算

C语言 结构体大小计算

/*个人标签啥东东封尾机*/

参考:http://blog.sina.com.cn/s/blog_5f77c7270100dnoy.html

 

实际上,由于存储变量时地址对齐的要求,编译器在编译程序时会遵循两条原则:
一、结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)
结构体大小:相同类型的数据声明结束后,下一个成员的偏移必须为成员大小的整数倍。
eg:
typedef struct stu4
{
char c1;  
char c2;
char c3;
 int  i;
}stu4;
 
typedef struct stu5
{
char c1;  
char c2;
char c3;
char c4;
  int  i;
}stu4;
 
这两个结构体大小都为8(已验证)。
二、结构体大小必须是所有成员大小的整数倍。
 
 

vs2010

poC:在main.c中 如果按照如下声明就使用的话,包未声明的标示符错误。如果是typedef struct stu4{}stu4;形式正确。为毛?????

 

struct stu4
{
char c1;  
char c2;
char c3;
 int  i;
};
----------------------------不为毛。
使用时如果没有typedef struct stu4{}stu4。。。。。。。。。的话,使用时必须在stu4前标示struct。
poC
20130913------------------------
C机构体中不可以有函数,包括析构函数。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值