C语言结构体对齐

对齐原则

  • 原则A:struct或者union的成员,第一个成员在偏移0的位置,之后的每个成员的起始位置必须是当前成员大小的整数倍
  • 原则B:如果结构体A含有结构体成员B,那么B的起始位置必须是B中最大元素大小整数倍地址(相当于先将嵌套结构体展开)
  • 原则C:结构体的总大小,必须是内部最大成员的整数倍

示例

  • 代码 struct A { int a; char b; char c; }; struct B { char b; int a; char c; }; struct C { int a; char b[10]; char c; }; struct D { char b[10]; int a; char c; }; struct E { char b; char e; char f; int a; char c; }; struct F { long long a; struct B b; }; int main() { struct A a; struct B b; struct C c; struct D d; struct E e; struct F f; printf("char:%d,short:%d,int:%d,long long size %d\n", sizeof(char),sizeof(short),sizeof(int),sizeof(long long)); printf("A size %d\n", sizeof(a)); printf("B size %d\n", sizeof(b)); printf("C size %d\n", sizeof(c)); printf("D size %d\n", sizeof(d)); printf("E size %d\n", sizeof(e)); printf("F size %d\n", sizeof(f)); }
  • 运行结果 char:1,short:2,int:4,long long size 8 A size 8 B size 12 C size 16 D size 20 E size 12 F size 24 ​

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏思考的代码世界

Python基础学习03天

14830
来自专栏数据结构与算法

POJ1659 Frogs' Neighborhood(Havel–Hakimi定理)

\(\sum_{i = 1}^k d_i \leqslant k(k - 1) + \sum_{i = k + 1}^n min(d_i, k)\)

11820
来自专栏数据结构与算法

1313 质因数分解

1313 质因数分解 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 青铜 Bronze 题目...

37570
来自专栏和蔼的张星的图像处理专栏

1. A + B 问题

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 不能用求和运算符肯定就是用一些最简单的逻辑运算符实现了。 如果没有进位的情况,可以了解用...

5810
来自专栏Flutter入门到实战

老司机用一篇博客带你快速熟悉Dart语法

版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/3d927a7bf020

51520
来自专栏用户画像

摩拜 [编程题] 排序次数

小摩有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的小摩只会下面这个操作:

19220
来自专栏有趣的django

19.JavaScript

简介 JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型 1.注释 单行 // 多行 /* */ 2.引用...

33750
来自专栏数据结构与算法

洛谷P1143 进制转换

题目描述 请你编一程序实现两种不同进制之间的数据转换。 输入输出格式 输入格式: 输入数据共有三行,第一行是一个正整数,表示需要转换的数的进制n(2≤n≤16)...

38160
来自专栏chenjx85的技术专栏

leetcode-448-Find All Numbers Disappeared in an Array

18150
来自专栏Java3y

希尔排序就这么简单

一、希尔排序介绍 来源百度百科: 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort...

43060

扫码关注云+社区

领取腾讯云代金券