结构体的对齐原则

news2024/11/17 17:26:39

一、C语言结构体对齐步骤:

        1.每个成员对齐

        2.总体对齐

二、C语言结构体对齐规则:

1.结构体第一个成员存放在相较于结构体变量起始位置的偏移量为0的位置

2.从第二个成员开始,往后的每一个成员都要对齐到某个对齐数的整数倍处。

        对齐数:结构体成员自身的大小和默认对齐数的较小值

        VS上默认对齐数是8

        gcc 没有默认对齐数,对齐数就是他本身大小

3.结构体的总大小,必须是最大对齐数的整数倍

   最大对齐数是:所有成员的对齐数中最大的值

4.如果嵌套了结构体,嵌套的结构体对齐原则:他内部最大的成员的整数倍。结构体提总体大小就是所有最大对齐数(含嵌套结构体成员中最大的成员)的整数倍。

三、讲解: 

#include<stdio.h>
struct s1
{            //自身大小  默认对齐数   最终对齐数
	double d;  //   第一个成员没有对齐数
	char c;    // 1         8           1 
	int i;     // 4         8           4
};
struct s2
{            //自身大小  默认对齐数   最终对齐数
	char c1;  //    第一个成员没有对齐数
	struct s1 s1;   //嵌套结构体的成员最大为8 ,对齐数就是8  ,自身大小为16
	char c2; //  1           8           1
};
int main()
{
	struct s2 s;
	printf("%d",sizeof(s));
	return 0;
}

初步来看s变量的大小为  1+7+16+1=25

最终s变量的大小还要是:最大对齐数的整数倍,

而s的成员的最大对齐数是 8,所以应该是8的倍数,

 所以最终s的大小是32

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1637546.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C 408—《数据结构》图、查找、排序专题考点(含解析)

目录 Δ前言 六、图 6.1 图的基本概念 6.2 图的存储及基本操作 6.3 图的遍历 6.4 图的应用 七、查找 7.2 顺序查找和折半查找 7.3 树型查找 7.4 B树和B树 7.5 散列表 八、排序 8.2 插入排序 8.3 交换排序 8.4 选择排序 8.5 归并排序和基数排序 8.6 各种内部排序算法的比较及…

33.基础乐理-原调、移调、转调、离调

原调、移调、转调、离调分为两类&#xff1a;原调是一个定义、一个名词&#xff0c;移调、转调、离调可以称之为是技术或者操作&#xff0c;是一种动词。也就是分为名词和动词两类。 原调&#xff1a; 一种音乐原本的调&#xff0c;就是它的原调&#xff0c;或者说按照简谱的调…

Codeforces Round 941 (Div. 2) (A~D)

1966A - Card Exchange 题意&#xff1a; 思路&#xff1a;手玩一下发现当存在某个数字个数超过k个&#xff0c;那么就能一直操作下去。那么答案就是k-1. void solve() {cin >> n >> m;map<int,int>mp;int maxx 1;for(int i 0 ; i < n ; i ){int x;c…

【热闻速递】Google 裁撤 Python研发团队

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 【&#x1f525;热闻速递】Google 裁撤 Python研发团队引入研究结论 【&#x1f5…

Android AOSP探索之Ubantu下Toolbox的安装

文章目录 概述安装Toolbox解决运行的问题 概述 由于最近需要进军android的framework,所以需要工具的支持&#xff0c;之前听说江湖上都流传source insight,我去弄了一个破解版&#xff0c;功能确实强大&#xff0c;但是作为多年android开发的我习惯使用android studio。虽然使…

SpringWebFlux RequestBody多出双引号问题——ProxyPin抓包揪出真凶

缘起 公司有个服务做埋点收集的&#xff0c;可以参考我之前的文章埋点日志最终解决方案&#xff0c;今天突然发现有些数据日志可以输出&#xff0c;但是没法入库。 多出的双引号 查看Flink日志发现了JSON解析失败&#xff0c;Flink是从Kafka拿数据&#xff0c;Kafka本身不处…

2024深圳杯数学建模竞赛D题(东三省数学建模竞赛D题):建立非均质音板振动模型与参数识别模型

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓&#xff08;浏览器打开&#xff09; https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 2024深圳杯数学建模竞赛D题&#xff08;东三省数学建模竞赛D题&#xff0…

深入理解多层感知机MLP

1. 基础理论 神经网络基础&#xff1a; 目标&#xff1a;了解神经网络的结构&#xff0c;包括神经元、权重、偏置和激活函数。 神经网络是由多个层次的神经元组成的网络&#xff0c;它模拟了人脑处理信息的方式。每个神经元可以接收输入、处理输入并生成输出。这一过程涉及到…

Vue项目打包APK----Vue发布App

时隔多年我又来跟新了&#xff0c;今天给大普家及下前端Vue傻瓜式发布App&#xff0c;话不多说直接上干货。 首先准备开发工具HBuilder X&#xff0c;去官网直接下载即可&#xff0c;算了直接给你们上地址吧HBuilderX-高效极客技巧。 打开软件&#xff0c;文件-->新建--&g…

通用漏洞评估系统CVSS4.0简介

文章目录 什么是CVSS&#xff1f;CVSS 漏洞等级分类历史版本的 CVSS 存在哪些问题&#xff1f;CVSS 4.0改进的“命名法”改进的“基本指标”考虑“OT/IOT”新增的“其他指标”CVSS 4.0存在的问题 Reference: 什么是CVSS&#xff1f; 在信息安全评估领域&#xff0c;CVSS为我们…

可视化大屏也在卷组件化,组件绝对是效率利器呀。

组件化设计在B端上应用十分普遍&#xff0c;其实可视化大屏组件更为规范&#xff0c;本期分享组件化设计的好处&#xff0c;至于组件源文件如何获取&#xff0c;大家都懂的。 组件化设计对可视化大屏设计有以下几个方面的帮助&#xff1a; 提高可重用性&#xff1a; 组件化设…

打印x型图案Java

KiKi学习了循环&#xff0c;BoBo老师给他出了一系列打印图案的练习&#xff0c;该任务是打印用“*”组成的X形图案。 输入描述&#xff1a; 多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜线和正斜线…

Codeforces Round 942 (Div. 2)

Codeforces Round 942 (Div. 2) Codeforces Round 942 (Div. 2) A. Contest Proposal 题意&#xff1a;给出两个长度为n的非递减排序的ab序列&#xff0c;通过向a序列中插入新元素&#xff0c;然后排序后删除最大元素&#xff0c;使得两个长度为n的排列中每一个 a i a_i ai​…

软件定义汽车落地的五大关键要素

1、架构升级 1.1 软件架构&#xff1a;分层解耦、服务化、API 接口标准化 随着企业向软件定义汽车开发方法的转变&#xff0c;软件架构也需要同步进行升级&#xff0c;引入面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;简称 SOA&#xff09;方法论。…

探索Plotly交互式数据可视化

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 探索Plotly交互式数据可视化 在数据科学和数据分析领域&#xff0c;可视化是一种强大的工具…

LeetCode 105.从前序与中序遍历构造二叉树

题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,nul…

Window(Qt/Vs)软件添加版本信息

Window&#xff08;Qt/Vs&#xff09;软件添加版本信息 文章目录 Window&#xff08;Qt/Vs&#xff09;软件添加版本信息VS添加版本信息添加资源文件添加版本定义头自动更新版本添加批处理脚本设置生成事件 Qt添加版本信息添加资源文件文件信息修改自动更新版本 CMake添加版本信…

HR招聘测评,什么是好用的在线人才测评工具?

选择哪一种人才测评工具&#xff1f;特别是每年的招聘高峰季节。根据以往的工作经验&#xff0c;一个好用的在线人才工具&#xff0c;可以起到事半功倍的效果&#xff0c;带给人力资源工作者一个轻松的工作体验。因此&#xff0c;我们必须对好用的人才测评工具有一个基本的认识…

vuex的学习

首先下载vuex&#xff0c;然后建立一个目录在vueX中 接着在index。js文件夹中引入 引入后导出这个文件 在main.js文件中导入&#xff0c;这样vue就有了状态管理 接着我创建了2个组件&#xff0c;在 里边规定了一个num:0 在 打印出来就可以看见 映射函数mapState&#xff0c;必…

PEI-T纳米纤维膜

PEI-T纳米纤维膜是一种结合了聚乙烯亚胺&#xff08;PEI&#xff09;和胸腺嘧啶&#xff08;T&#xff09;的纳米纤维膜。其制备过程通常涉及将胸腺嘧啶-1-乙酸溶于水中&#xff0c;加入EDC&#xff08;一种交联剂&#xff09;进行搅拌&#xff0c;然后加入PEI溶液进行反应、透…