结构的大小如何随不同数据类型而变化

2023-12-10

我使用的是 Linux 32 位操作系统, 和 GCC 编译器。

我尝试了三种不同类型的结构。 在第一个结构中我只定义了一个char多变的。该结构的大小为 1,这是正确的。

在第二个结构中我只定义了一个int多变的。这里结构的大小显示为 4,这也是正确的。

但在第三个结构中,当我定义一个时char和一个int这意味着总大小应该为 5,但输出显示为 8。任何人都可以解释一下结构是如何分配的吗?

typedef struct struct_size_tag
{
    char c;
    //int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}

输出:结构尺寸:1

typedef struct struct_size_tag
{
    //char c;
    int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}

输出:结构尺寸:4

typedef struct struct_size_tag
{
    char c;
    int i;
}struct_size;

int main()
{
        printf("Size of structure:%d\n",sizeof(struct_size));
        return 0;
}

Output:

结构尺寸:8


尺寸差异是由于对齐造成的。编译器可以自由选择填充字节,这使得结构的总大小不一定是其各个元素的总和。

如果结构的填充是不需要的,因为它可能必须与某些硬件要求(或其他原因)接口,编译器通常支持打包结构,因此填充被禁用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

结构的大小如何随不同数据类型而变化 的相关文章

随机推荐

  • 在delphi中使用数据模块分离数据集实例

    我在用Delphi6并有一个数据模块ADO DataSet它由两种形式使用 formS 和 Form B 每种形式都有一个Dataset Open in OnCreate and Dataset Close in OnClose 如果两个表
  • 使用 Flot API 绘制多个条形图 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 您好 我正在使用 FLOT 图表 API 在我的应用程序中以条形图的形式显示数据 我需要在条形图中显示数据 并在包含前数据和后数据的类别中显示数据 如图所示 示例图 请告诉我如何
  • asp.net mvc 用多个枚举装饰 [Authorize()]

    我有一个控制器 我希望两个角色能够访问它 1 位管理员或 2 位主持人 我知道你可以做 Authorize Roles admin moderators 但我的角色在枚举中 使用枚举我只能授权一个角色 我不知道如何授权两个 我尝试过类似 A
  • 将数据帧转换为元组列表的字典

    我有一个如下所示的数据框 user item 0 b80344d063b5ccb3212f76538f3d9e43d87dca9e The Cove Jack Johnson 1 b80344d063b5ccb3212f76538f3d9e
  • JavaScript 新关键字和对象范围

    今天晚些时候 我滚动浏览 ejhon com 幻灯片 发现了以下内容 给这个代码 function katana this myvar true katana console info myvar 在我编译代码的那一刻 我认为 myvar
  • 将 `params` 和 `session` 以及 `env` 添加到对象

    在我正在写的宝石中 我正在尝试添加机架方法params session and env to Object以便gem的用户可以访问和修改它们 我尝试过使用Object instance variable set and Object ins
  • 获取iPhone照片曝光信息

    有没有办法获取 iPhone 拍摄的照片的曝光设置 光圈 快门速度 ISO 在 iPhone 上运行的应用程序可以使用 UIImagePickerController 接口来拍照 但这并不能提供有关图片的太多信息 iPhone 拍摄的照片的
  • Angular Material MatChipList - 如何在动态 FormArray 上使用它?

    堆栈闪电战 这是我的 FormArray 变体 this productGroup this fb group name variants this fb array this fb group type options 我在用着MatCh
  • 使用 LINQ 和 Lambda 加入/Where

    我在使用 LINQ 和 Lambda 编写的查询时遇到问题 到目前为止 我遇到了很多错误 这是我的代码 int id 1 var query database Posts Join database Post Metas post gt d
  • Twisted Python 失败 - Scrapy 问题

    我正在尝试使用 SCRAPY 来抓取该网站的任何搜索查询的搜索结果 http www bewakoof com 该网站使用AJAX 以XHR的形式 来显示搜索结果 我设法跟踪 XHR 您会在我的代码中注意到它 如下所示 在 for 循环内
  • 无法加载 CIFAR-10 数据集:加载键“\x1f”无效

    我目前正在 TensorFlow 中尝试一些神经网络 我决定尝试使用 CIFAR 10 数据集 我从网站下载了 CIFAR 10 python 数据集 https www cs toronto edu kriz cifar html 在Py
  • Swift 在 0 和 1 之间随机浮动

    在 Swift 中 我试图获得 0 和 1 之间的随机浮点数 但我似乎无法让类型转换起作用 func randomCGFloat gt CGFloat return CGFloat arc4random UINT32 MAX 我收到 CGF
  • 从 zend 框架 url 中删除 index.php

    我正在使用 zend 框架开发一个模块 并且我已经使用 zf create project 创建了一个项目 命令 当我尝试使用访问网址时ip folder controller action当我尝试使用访问时 它给出错误未找到错误ip fo
  • Shenandoah 2.0 消除转发指针

    In Shenandoah 1 0每个对象都有一个额外的标头 称为forwarding pointer 为什么需要这样做以及导致其被消除的原因是什么Shenandoah 2 0 首先 每个 java 对象都有两个标头 klass and m
  • 在 jQuery 中,同时使用 resizing() 和draggable() 时如何修复包含错误? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 在 jQuery 中 同时使用 resizing 和d
  • R:如何根据列中的值添加行

    我有一个如下所示的数据框 line c 1 2 NA 4 5 NA 7 group c 1 0 Group A 2 0 Group B 3 0 Group C 4 0 Group D 5 0 Group E 6 0 Group F 7 0
  • simplexml 错误处理 php

    我正在使用以下代码 function GetTwitterAvatar username xml simplexml load file http twitter com users username xml imgurl xml gt p
  • shell中管道组件的执行顺序

    ls wc 按什么顺序ls and wc在这里执行 或者是 and wc只是论点ls 在表达式中ls wc 您的 shell 将大致执行以下操作 启动两个子 shell A 和 B A 的标准输出连接到 B 的标准输入 在子 shell A
  • 在 javascript 中设置子字符串的样式

    你好 我正在尝试使用 javascript 设置子字符串的样式 这是我的代码 function runtest document getElementById test1 innerHTML substring 0 2 style font
  • 结构的大小如何随不同数据类型而变化

    我使用的是 Linux 32 位操作系统 和 GCC 编译器 我尝试了三种不同类型的结构 在第一个结构中我只定义了一个char多变的 该结构的大小为 1 这是正确的 在第二个结构中我只定义了一个int多变的 这里结构的大小显示为 4 这也是