结构体:修改默认对齐数、结构体传参

//——————7.修改默认对齐数

#pragma:预处理指令,可以改变我们的默认对齐数。

//#include <stdio.h>

//#pragma pack(8)//设置默认对齐数为8//设置的开始

//struct S1

//{

//    char c1;

//    int i;

//    char c2;

//};

//#pragma pack()//取消设置的默认对齐数,还原为默认//设置的结束

//注意:如果需要在多个结构体中设置不同的默认对齐数

//#pragma pack(1)//设置默认对齐数为1(为1时表示不进行对齐存放,全部紧挨着,最省空间,就不需要再考虑顺序问题了)

//struct S2

//{

//    char c1;

//    int i;

//    char c2;

//};

//#pragma pack()//此代码为取消设置的默认对齐数,还原为默认

//int main()

//{

//    //输出的结果是什么?

//    printf("%d\n", sizeof(struct S1));

//    printf("%d\n", sizeof(struct S2));

//    return 0;

//}

结论:

结构在对齐方式不合适的时候,我们可以自根据自己的需求自己更改默认对齐数。

/ /————8. 结构体传参

//#include<stdio.h>

//struct S

//{

// int data[1000];

// int num;

//};

//struct S s = { {1,2,3}, 100 };

结构体传参

//void print1(const struct S ss)

//{

// int i = 0;

// for(i=0;i<3;i++)

// {

//  printf("%d ",ss.data[i]);

// }

// printf("%d\n", ss.num);

//}

结构体地址传参

//void print2(const struct S* ps)

//{

// int i = 0;

// for (i = 0; i < 3; i++)

// {

//  printf("%d ", ps->data[i]);

// }

// printf("%d\n", ps->num);

//}

//int main()

//{

// print1(s);  //传结构体(传值调用)直接传值,ss中会有一块单独的空间存放s

// print2(&s); //传地址(传址调用)。传的是s的地址,一个地址的大小是4/8字节,即所需使用的空间就更小一些,

// //效果也就相对于函数传参更加有效果

// return 0;

//}

//在printf1中把s传给ss,更改ss并不会影响s,即s不会被改动过。

// 在printf2中把s的地址传给ps,当误操作ps会导致s的改变,因此在printf2的形参中+count,限制ps改变

//上面的 print1 和 print2 函数哪个好些?

//答案是:首选print2函数。

//原因:

//函数传参的时候,参数是需要压栈(就是在栈空间里面开辟一块区域(或增加一块区域),把形参依次放进去),会有时间和空间上的系统开销。

//如果传递一个结构体对象的时候,结构体过大,参数压栈的的系统开销比较大,所以会导致性能的下降。

// 而当我们采用指针的形式,就不会,就一定程度上变了这个问题的出现

//结论:

//结构体传参的时候,首选传结构体的地址。

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

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

相关文章

PromQL语法

PromQL&#xff08;Prometheus Query Language&#xff09;是 Prometheus 内置的数据查询语言&#xff0c;它能实现对事件序列数据的查询、聚合、逻辑运算等。它被广泛应用在 Prometheus 的日常应用当中&#xff0c;包括对数据查询、可视化、告警处理当中。简单地说&#xff0c…

易趋产品升级(EasyTrack 11_V1.3) | 集成飞书、WPS、个性化设置,增强团队协作和用户体验

企业在项目管理过程中&#xff0c;经常会遇到项目信息同步不及时、沟通障碍以及管理软件使用不便捷等难题&#xff0c;导致团队协作效率低下。这种情况下&#xff0c;如果使用了多个办公软件&#xff08;如&#xff1a;钉钉、企业微信、项目管理软件等&#xff09;&#xff0c;…

35--JDK新特性

1、新语法结构 新的语法结构&#xff0c;为我们勾勒出了 Java 语法进化的一个趋势&#xff0c;将开发者从复杂、繁琐的低层次抽象中逐渐解放出来&#xff0c;以更高层次、更优雅的抽象&#xff0c;既降低代码量&#xff0c;又避免意外编程错误的出现&#xff0c;进而提高代码质…

【VB测绘程序设计】案例6——华氏温度与摄氏温度之间的转换程序(附源代码)

【VB测绘程序设计】案例6——华氏温度与摄氏温度之间的转换程序(附源代码) 文章目录 前言一、界面显示二、程序说明三、程序代码1程序变换2程序变换四、数据演示总结前言 本文主要掌握Val()函数以及String数据类型的应用,通过2个text来输入数据,2个Command控件来执行转换…

Java——功能开发思路

目录 前言一、准备工作—准备各类文件1、准备实体类、枚举类、常量类2、准备配置文件 二、先编写Controller三、再编写Service、serviceImpl四、再编写mapper后续敬请期待 前言 Java开发功能简单思路 一、准备工作—准备各类文件 提前知道需要用到哪些类可以提前准备好&#…

智能客服系统要素分析:提升客户满意度与工作效率的关键要素

智能客服系统是企业建立完善服务框架的重要工具。市面上存在着形态各异的各种客服系统&#xff0c;如何选择一款最适合自己企业的产品是很多采购人员想知道的问题。事实上&#xff0c;不同的智能客服系统之间的主要功能并未存在太大的区别&#xff0c;它们往往会在一些亮点功能…

位运算trick

位运算本质上不是一种算法&#xff0c;而是一种trick&#xff0c;用来节约时间/空间的trick。背后常常有集合论、状态压缩等思想的支撑。这里探讨的位运算指的是其背后的指导思想而不是trick本身。因此对trick本身的证明就略过了。 位运算各种trick的详解请参照灵神的教学贴&a…

Resilience4j相关面试题及答案

1、什么是Resilience4j&#xff0c;与Hystrix有何不同&#xff1f; Resilience4j是一个为Java 8和函数式编程设计的故障恢复库&#xff0c;它主要利用了Vavr库中的函数式编程概念。Resilience4j提供了一系列的故障恢复机制&#xff0c;包括断路器&#xff08;Circuit Breaker&…

09 标准库软件模拟I2C时序

引言&#xff1a; 你需要的I2C知识这里都有&#xff0c; 本文涵盖了I2C的基本知识和在各个主流平台的开发实例&#xff0c; 总之&#xff0c; 你需要的&#xff0c;都在这里&#xff0c; 后续我也会继续更新在嵌入式开发中常见的通信协议。 一、I2C的基本知识 1. I2C介绍 IIC总…

C++导论

C导论 C&#xff08;读作"C plus plus"&#xff09;是一种通用编程语言&#xff0c;由Bjarne Stroustrup在1980年代初期创造。它是C语言的扩展&#xff0c;同时也支持面向对象编程&#xff08;OOP&#xff09;范式。C被广泛用于开发各种类型的应用程序&#xff0c;包…

留言板(Mybatis连接数据库版)

目录 1.添加Mybatis和SQL的依赖 2.建立数据库和需要的表 3.对应表中的字段&#xff0c;补充Java对象 4.对代码进行逻辑分层 5.后端逻辑代码 之前的项目实例【基于Spring MVC的前后端交互案例及应用分层的实现】https://blog.csdn.net/weixin_67793092/article/details/134…

HTTPS协议详解

目录 前言 一、HTTPS协议 1、加密是什么 2、为什么要加密 二、常见加密方式 1、对称加密 2、非对称加密 三、数据摘要与数据指纹 1、数据摘要 2、数据指纹 四、HTTPS加密策略探究 1、只使用对称加密 2、只使用非对称加密 3、双方都使用非对称加密 4、对称加密非…

html-css-js使用axios和ajax获取接口并携带请求头+获取输入框或选择器内容

需求&#xff1a;使用axios或者Ajax获取接口&#xff0c;有些需要获取到输入框&#xff0c;或者选择器内容之后传给接口&#xff0c;也就是写了几种不同请求的方法&#xff0c;网上有很多方法&#xff0c;本文章算是个归纳吧。 一、axios请求传参请求头 1.github下载axios 我…

MS2358:96KHz、24bit 音频 ADC

产品简述 MS2358 是带有采样速率 8kHz-96kHz 的立体声音频模数 转换器&#xff0c;适合于面向消费者的专业音频系统。 MS2358 通过使用增强型双位 Δ - ∑ 技术来实现其高精度 的特点。 MS2358 支持单端的模拟输入&#xff0c;所以不需要外部器 件&#xff0c;非常适…

C++每日一练(7):爬山

题目描述 LeiQ最近参加了一个登山俱乐部&#xff0c;部长给他了一个n*m地图,地图上的每一个格子的值表示一个山的海拔高度&#xff0c;LeiQ现在在(x,y)表示在地图上的位置,他想要登上地图上最高的山&#xff0c;所以他想知道他爬上最高的山的山顶还需向上爬多少米。 例如: x\y…

领域驱动设计(Domain-Driven Design DDD)——模型驱动设计的构造块2

书接上回领域驱动设计&#xff08;Domain-Driven Design DDD)——模型驱动设计的构造块1-CSDN博客 四、领域对象的生命周期 每个对象都有生命周期&#xff0c;管理这些对象面临诸多挑战&#xff0c;主要的挑战有以下两类。 在整个生命周期中维护完整性 防止模型陷入管理…

内侧APP分发平台:移动应用开发的加速器

在数字化时代&#xff0c;移动应用已成为企业触达用户的重要渠道。为了迅速占领市场&#xff0c;开发者需要一种能够快速发布和测试移动应用的解决方案。内侧APP分发平台应运而生&#xff0c;它通过简化应用的封装、测试和分发流程&#xff0c;极大地提升了移动应用的上市速度。…

【v8漏洞利用模板】starCTF2019 -- OOB

文章目录 前言参考题目环境配置漏洞分析与测试漏洞利用通用技巧各种数据类型转换如何泄漏 libcWASM 执行 shellcode利用相关函数模板 前言 一道入门级别的 v8 题目&#xff0c;不涉及太多的 v8 知识&#xff0c;很适合入门&#xff0c;对于这个题目&#xff0c;网上已经有很多…

Golang学习之路一四常量与枚举

Golang学习之路一四常量与枚举 常量 const 关键字 定义常量 package mainimport "fmt"// 声明在函数外部 const filename "123.txt"const (username "admin"password "admin" )func main() {// 声明在函数的内部const filename …

【Linux】修复 Linux 错误 - 地址已在使用中

修复 Linux 错误 - 地址已在使用中 在使用 Linux 操作系统时&#xff0c;您可能会遇到各种错误。其中一个常见的错误是“地址已在使用中”。这个错误通常发生在您尝试绑定一个已经被其他进程使用的地址时。本文将介绍如何诊断和修复这个错误。 诊断错误 要诊断“地址已在使用…