计算结构的大小

电脑杂谈  发布时间:2020-07-21 05:19:57  来源:网络整理

试根据下表信息计算久期缺口大小_胎儿大小计算_计算结构体大小

计算结构的大小:

可以在结构中定义的数据类型:

1. 基本类型

2. 上面出现的数据类型,例如上面定义的结构

3. 指向自己

由于内存对齐问题,每种数据类型的位置都会导致结构的大小不同,因此最后

如何计算结构的大小?

首先介绍一个概念偏移计算结构体大小,结构中的偏移是结构成员的地址与结构变量之间的差,

例如,第一结构构件的偏移为0,第二结构构件的偏移为第一结构

大小

胎儿大小计算_试根据下表信息计算久期缺口大小_计算结构体大小

,如果第一个成员为int b;那么第二个结构成员变量的偏移量是4,

计算结构尺寸的规则:

1. 每个成员的偏移量必须是该成员的倍数.

2. 结构的大小必须是该结构的最大成员(以字节为单位)的倍数.

例如,以下结构: 示例1:

结构A

{

字符a;

短b;

int c;

胎儿大小计算_计算结构体大小_试根据下表信息计算久期缺口大小

};

第一个成员的偏移量为0;通常不需要查看它,a的大小为1,因此成员b的偏移量为1,b的大小

是2,1不是2的倍数,因此1 + 1应该是2的倍数,成员c的偏移量是1 + 1 + 2,即成员c

多个,现在满足了计算结构尺寸的第一条规则: 将成员的偏移量更改为成员的大小

的倍数

和第二个规则: 结构的大小是该结构最大成员的倍数,而结构的大小是每个成员的大小

a; 2,b: 2,c: 4的总和为8. 结构的最大成员是c,大小为4计算结构体大小,它满足第二个条件,所以这个结

结构的倍数是8

代码:

#include <stdio.h>
int main ()
{
    struct A
    {
        char a;
        short b;
        int c;
    };
    printf ("%d",sizeof(A));
    return 0;
}

计算结构体大小_胎儿大小计算_试根据下表信息计算久期缺口大小

示例2:

结构数据

{

字符a;

int b;

int64_t c;此数据类型是带符号的64位整数数据类型

char d;

}

您不需要读取成员a的偏移量. 表示每个结构的第一个成员的偏移量为0;

试根据下表信息计算久期缺口大小_计算结构体大小_胎儿大小计算

但是它的大小是1,这是成员b的偏移量. 成员b的大小为4,并且1不是4的倍数,所以a

1的大小应加到3,即4,成员3的偏移量是8,成员c的大小是8,成员c的偏移量是

成员c的大小的倍数,无需增加大小,成员d的偏移量为16,成员d的大小为1,偏移量

它是成员大小的倍数,现在符合计算结构大小的第一个规则: 将成员的偏移量更改为成员大小

的倍数

,第二个规则: 结构的大小是该结构的最大成员的倍数,最大成员是c,即大小

它是8,结构的大小是每个成员的总和,a: 4,b: 4,c: 8,d: 1全部加起来17,

但是17不是8的倍数,因此我们应该将17 + 7更改为24,因此结构的大小为24

代码:

#include <stdio.h>
int main ()
{
    struct Data
{
    char a;
    int b;
    long long  c;    
    char d;
};
    printf ("%d\n",sizeof(Data));
    return 0;
}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-287923-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...