结构体大小计算

标题结构体大小计算:

//结构体成员偏移量必须是成员大小的整数倍
//结构体的大小必须是成员大小的整数倍(数组,结构体除外)
//虽然浪费空间,但按照计算机的访问规则,这种对齐方式,提高了效率

struct s1
{
 char a; //1 +3 {} {}{}{} {}{}{}{}
    int b;//4
    float c;//4
    double d;//8``
};

```c
//#pragma pack(4) //指定向4对齐,而不是8
struct s11
{
 char a; //1 +3 {} {}{}{} {}{}{}{}
    int b;//4
    float c;//4
    double d;//8
};`
#pragma pack(10) //指定向10对齐 当指定大小大于成员变量大小时,还按最大的成员变量大小的整数倍计算
struct s111
{
 char a; //1 +3 {} {}{}{} {}{}{}{}
    int b;//4
    float c;//4
    double d;//8
};
`struct s2
{
 char a; //1 +3 {} {}{}{} {}{}{}{}
    int b;//4
    float c;//4
    int d[10];//40
};
struct s3
{
 char a;//1 +3
    float b;//4
    struct s4//24
    {
  double c;
        char d[20];
    };
};
struct s5
{
 char a;//1 +3
    float b;//4
    struct s6 // 32
    {
  double c;//8 +2
        char d[20];//20
    }temp;
};
int main()
{
    printf("s1:%d\n",sizeof(struct s1));
    printf("s11:%d\n",sizeof(struct s11));
    printf("s111:%d\n",sizeof(struct s111));
    printf("s2:%d\n",sizeof(struct s2));
    printf("s3:%d\n",sizeof(struct s3));
    printf("s5:%d\n",sizeof(struct s5));
    system("pause");
 return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值