gpt4 book ai didi

c - 结构成员如何在内存中分配?

转载 作者:太空狗 更新时间:2023-10-29 16:45:46 24 4
gpt4 key购买 nike

在尝试为 future 的 C 程序创建内存管理器时,我遇到了这个问题:

“分配结构时,它们的成员字段是否按照指定的顺序存储?”

例如,考虑以下结构。

typedef struct {
int field1;
int field2;
char field3;
} SomeType;

分配时,字段的内存地址会按照field1,field2,field3的顺序吗?或者这不能保证?

最佳答案

简答:它们按照它们在结构中声明的顺序分配。


示例:

#include <stdio.h>
#include <string.h>

struct student
{
int id1;
int id2;
char a;
char b;
float percentage;
};

int main()
{
int i;
struct student record1 = {1, 2, 'A', 'B', 90.5};

printf("size of structure in bytes : %d\n",
sizeof(record1));

printf("\nAddress of id1 = %u", &record1.id1 );
printf("\nAddress of id2 = %u", &record1.id2 );
printf("\nAddress of a = %u", &record1.a );
printf("\nAddress of b = %u", &record1.b );
printf("\nAddress of percentage = %u",&record1.percentage);

return 0;
}

输出:

size of structure in bytes : 16 
Address of id1 = 675376768
Address of id2 = 675376772
Address of a = 675376776
Address of b = 675376777
Address of percentage = 675376780

下面给出了上述结构内存分配的图形表示。此图将帮助您非常轻松地理解 C 中的内存分配概念。

enter image description here


进一步阅读:查看here (也是上述示例的来源)C – Structure PaddingC 中的结构动态内存分配

关于c - 结构成员如何在内存中分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20737176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com