结构体详解

结构体:

一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构
结构体可以用来封装一些属性来组成新的类型。

结构体的大小:

结构体的大小不是结构体元素单纯相加。内存对齐(若计算机使用32位字长的cpu,对32位的cpu而言,取四个字节的数要比取一个字节的数更高效。因此在结构体中每个成员的首地址都是4的整数倍,取数据元素时会更高效,也更方便)
每个特定平台上的编译器都有自己默认“对齐系数”(对齐模数)
程序员可以通过预编译命令#pragmapack(n),n=1,2,4,8,16来改变这一系数,n就是对齐系数

C语言结构体对齐步骤:

1.结构体各成员对齐
2.结构体总体对齐

C语言结构体对齐规则:

1.结构体(struct)的数据成员,第一个数据成员存放的地址为结构体偏移量为0的地址处
2.其它结构体成员自身对齐时,存放的地址为min{有效对齐值为自身对齐值,指定对齐值}的最小整数倍的地址处
自身对齐值:结构体变量里每个成员的自身大小
指定对齐值:有宏#pragma pack(N)指定的值N一定是2的幂次方。如1,2,4,8,16等。
如果没有定义宏,32位主机上默认指定对齐值为4,64位默认对齐值为8,ARM CPU默认指定对齐值为8;
有效对齐值:结构体成员自身对齐时有效对齐值为自身对齐值与指定对齐值中较小的一个
3.总体对齐:字节大小是min{所有成员中自身对齐值最大的,指定对齐值}的整数倍

构造函数初始化结构体

1.为什么要使用构造函数初始化结构体
a.如果有某个成员未被初始化,那么在这种情况下,跟随在该成员后面的成员都不能初始化
b.如果结构体包括任何诸如字符串之类的对象,那么在许多编译器上将无法运行
因此可以使用构造函数来初始化结构体成员变量,与初始化类成员变量相同。

以下是一个名为 Employee 的结构体的声明语句,它包含一个具有两参数的构造函数,以便在创建一个 Employee 变量而不向其传递任何参数时,提供默认值:

struct Employee
{string name;    // 员工姓名int vacationDays,    // 允许的年假daysUsed;    //已使用的年假天数Employee (string n ="",int d = 0)    // 构造函数{name = n;vacationDays = 10;daysUsed = d;}
};

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

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

相关文章

【算法】dp题单

题单链接: https://vjudge.net/contest/574209#overview 目录 1. 洛谷 P1020 导弹拦截 (dp二分Dilworth 定理) 2. P1439 最长公共子序列(二分求最长公共子序列) 3. 洛谷 P1854 花店橱窗布置 (线性dp 用…

OpenFeign

OpenFeign 一、基本使用 1、引入依赖 <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId><groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-start…

k8s的网络

k8s的网络 k8s中的通信模式&#xff1a; 1、pod内部之间容器与容器之间的通信 在同一个pod中的容器共享资源和网络&#xff0c;使用同一个网络命名空间&#xff0c;可以直接通信的 2、同一个node节点之内&#xff0c;不同pod之间的通信 每个pod都有一个全局的真实的ip地址…

“MapStruct妙用指南:解锁Java对象映射的强大力量!“ ️

目录 1-10 MapStruct进阶问题解析11-20 MapStruct进阶问题解析感谢阅读 前言&#xff1a; 欢迎来到今天的博客&#xff0c;我们将一同探索Java领域中一款备受瞩目的对象映射框架 — MapStruct。它的强大之处不仅在于简化代码&#xff0c;更在于提高开发效率。在本文中&#xf…

BMS均衡技术

一、电池的不一致性&#xff1f; 每个电池都有自己的“个性”&#xff0c;要说均衡&#xff0c;得先从电池谈起。即使是同一厂家同一批次生产的电池&#xff0c;也都有自己的生命周期、自己的“个性”——每个电池的容量不可能完全一致。例如以下的两个原因都会造成电池不一致…

CSS中的object-fit和background-size

上面文章总结了下img标签和background-image的区别&#xff0c;这篇文章介绍一下其相关属性。 object-fit CSS属性指定可替换元素&#xff08;例如&#xff1a;<img> 或 <video>&#xff09;的内容应该如何适应到其使用高度和宽度确定的框。object-fit的默认值是…

docker部署mysql

1.查找mysql镜像 [rootVM-4-5-centos ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-sourc…

AnyText:多语言视觉文字生成与编辑——最详细傻瓜式安装教程

先看图,下面都是AnyText生成的,可以说效果效果确实是很震撼了。 附上地址: GitHub - tyxsspa/AnyTextContribute to tyxsspa/AnyText development by creating an account on GitHub.https://github.com/tyxsspa/AnyText接下来开始详细讲解安装过程: 1. 下载项目 (1)下…

全国计算机等级考试| 二级Python | 真题及解析(8)

1. 数据库系统的核心是___________。 A数据库管理系统 B数据模型 C软件工具 D数据库 正确答案: A 2. 下列叙述中正确的是___________。 A线性表链式存储结构的存储空间可以是连续的,也可以是不连续的 B线性表链式存储结构与顺序存储结构的存储空间都是连续的 C线性表…

探讨JVM垃圾回收机制与内存泄漏

目录 1. 垃圾回收机制的基本原理 2. 内存泄漏的定义与表现 3. 垃圾回收机制的局限性 4. Finalizer导致的延迟 5. 不当使用静态集合 6. JNI资源未释放 7. 解决内存泄漏的方法 8. 结语 在Java虚拟机&#xff08;JVM&#xff09;的世界中&#xff0c;垃圾回收机制被设计用…

电磁波的信号加载说明

电磁波的信号加载电磁波(Electromagnetic wave)是由同相振荡 且互相垂直的电场与磁场在空间中衍生发射的振荡粒子波&#xff0c;是以波动的形式传播的电磁场&#xff0c;具有波粒二象性&#xff0c;其粒子形态称为光子&#xff0c;电磁波与光子不是非黑即白的关系&#xff0c;而…

外显和呼叫系统的关系

经常接到推销电销&#xff0c;对于不同号码显示&#xff0c;我们选择接听电话和挂断电话的概率也是不一样的。 我们接到号码有显示运营商和归属地名称。 例如&#xff1a;北京 移动&#xff0c;广东深圳 电信&#xff0c;广电&#xff0c;广东广州 虚拟运营商等&#xff1b; 有…

快速打通 Vue 3(二):响应式对象基础

很激动进入了 Vue 3 的学习&#xff0c;作为一个已经上线了三年多的框架&#xff0c;很多项目都开始使用 Vue 3 来编写了 这一组文章主要聚焦于 Vue 3 的新技术和新特性 如果想要学习基础的 Vue 语法可以看我专栏中的其他博客 Vue&#xff08;一&#xff09;&#xff1a;Vue 入…

Flink-【时间语义、窗口、水位线】

1. 时间语义 1.1 事件时间&#xff1a;数据产生的事件&#xff08;机器时间&#xff09;&#xff1b; 1.2 处理时间&#xff1a;数据处理的时间&#xff08;系统时间&#xff09;。 &#x1f330;&#xff1a;可乐 可乐的生产日期 事件时间&#xff08;可乐产生的时间&…

算法导论复习——CHP24 单源最短路

单源最短路径问题&#xff1a; 给定一个图G (V,E)&#xff0c;找出从给定的源点s∈V到其它每个结点v∈V的最短路径。 这样最短路径具有最优子结构性&#xff1a;两个结点之间的最短路径的任何子路径都是最短的。 基本概念 负权边&#xff1a;权重为负值的边称为负权重的边。 如…

【Vue3组件间通信理解】

Vue3组件通信方式 方式一&#xff1a;props方式二&#xff1a;自定义事件方式三&#xff1a;mitt方式四&#xff1a;v-model方式五&#xff1a;$attrs方式六&#xff1a;refs, parent方式七&#xff1a;provide, inject 总结来源于 尚硅谷vue3 大部分实现双向通信都是向子组件…

Vue3+TS+ElementPlus的安装和使用教程【详细讲解】

前言 本文简单的介绍一下vue3框架的搭建和有关vue3技术栈的使用。通过本文学习我们可以自己独立搭建一个简单项目和vue3的实战。 随着前端的日月更新&#xff0c;技术的不断迭代提高&#xff0c;如今新vue项目首选用vue3 typescript vite pinia……模式。以前我们通常使用…

webpack知识点总结(高级应用篇)

除开公共基础配置之外&#xff0c;我们意识到两点: 1. 开发环境(modedevelopment),追求强大的开发功能和效率&#xff0c;配置各种方便开 发的功能;2. 生产环境(modeproduction),追求更小更轻量的bundle(即打包产物); 而所谓高级应用&#xff0c;实际上就是进行 Webpack 优化…

计算机组成原理-期末复习

目录 第一章——计算机系统概述 一、数字计算机的主要组成结构 二、指令的形式 三、控制器的基本任务 四、指令流和数据流 五、适配器与输入/输出设备 七、计算机的系统软件 八、C 语言的转换层次图 九、计算机系统的层次结构图 第二章——运算方法和运算器 一、 数据格式…

vue-quill-editor 清除黏贴的文本自带样式,且只允许黏贴文本

在module的粘贴板里添加一个匹配器 modules: {toolbar: false,clipboard: {// 粘贴过滤matchers: [[Node.ELEMENT_NODE, this.HandleCustomMatcher]]// [img, this.HandleCustomMatcher2]},},let ops []Delta.ops.forEach(op > {if (op.insert && typeof op.insert…