C语言 结构体
本文介绍了C语言中结构体的基本概念和使用方法。主要内容包括1.结构体声明语法和成员访问方式2.结构体内存对齐规则及其对空间利用的影响3.通过示例展示了不同成员排列顺序对结构体大小的影响4.结构体位段的使用方法及其与普通结构体的区别5.位段的内存分配特点和使用注意事项包括其不跨平台的特性和内存地址限制。文章强调结构体传址调用的优势并指出合理排列成员变量可以优化内存空间利用。结构体的声明结构体属于自定义类型 C语言中有结构体 枚举 联合体struct{成员变量;}结构体变量;.访问成员变量间接访问-指针-成员变量匿名对象只可以使用一次想使用匿名对象 需要重名 使用里面的成员变量 直接引用结构自引用定义结构体不要使⽤匿名结构体了在匿名对象中 提前使用名字来访问是不对的结构体内存对⻬对齐规则1一个成员变量到起始地址的偏离量为02其他成员变量要对齐对齐数的整数倍的地址处3整个结构体的最大对齐数等于 成员变量的最大对齐数4重叠结构体对⻬数 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。vs默认为8练习/练习1structS1{charc1;inti;charc2;};printf(%d\n,sizeof(structS1));//练习2.......structS2{charc1;charc2;inti;};printf(%d\n,sizeof(structS2));//练习3structS3{doubled;charc;inti;};printf(%d\n,sizeof(structS3));总大小为16个字节//练习4-结构体嵌套问题structS4{charc1;structS3 s3;doubled;};printf(%d\n,sizeof(structS4));同一类型的数值最好放在一起 节约空间 像S1和S2一样 不同顺序 结果不同结构体的内存对⻬是拿空间来换取时间的做法#pragma pack()#pragma pack()修改对齐数而单独的pramga pack恢复默认的对齐数结构体传址调用传址调用比传值调用大大节约了空间结构体传参的时候要传结构体的地址。结构体实现位段位段是成员变量 数字 形式内存分配1.位段的成员可以是int unsigned int signed int或者是char等类型2.位段的空间上是按照需要以4个字节int或者1个字节char的⽅式来开辟的。3.位段涉及很多不确定因素位段是不跨平台的注重可移植的程序应该避免使⽤位段。注vs在同一空间是从右向左存比特位 如果开辟一个不足则不要了 重新开辟一个与结构相比 更省空间 但 有风险位段使⽤的注意事项位段的⼏个成员共有同⼀个字节这样有些成员的起始位置并不是某个字节的起始位置那么这些位置处是没有地址的。内存中每个字节分配⼀个地址⼀个字节内部的bit位是没有地址的。所以不能对位段的成员使⽤操作符这样就不能使⽤scanf直接给位段的成员输⼊值只能是先输⼊放在⼀个变量中然后赋值给位段的成员。

相关新闻

大数据领域 HDFS 的数据一致性保障

大数据领域 HDFS 的数据一致性保障

大数据领域 HDFS 的数据一致性保障关键词:大数据、HDFS、数据一致性、副本机制、校验和、租约机制摘要:本文围绕大数据领域 HDFS 的数据一致性保障展开深入探讨。首先介绍了 HDFS 的背景信息,包括其目的、适用读者、文档结构和相关术语。接着…

2026/7/3 14:24:56 阅读更多 →
Java SpringBoot+Vue3+MyBatis 高校教师电子名片系统系统源码|前后端分离+MySQL数据库

Java SpringBoot+Vue3+MyBatis 高校教师电子名片系统系统源码|前后端分离+MySQL数据库

💡实话实说: 有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。 摘要 随着信息技术的快速发展,高校教师的信息化管理需求日益增长。传统纸质名片存在易丢失、信息更新不及时等问题,无法满足现…

2026/7/3 14:24:57 阅读更多 →
LDR系列PD应用方案讲解之OTG边听边充边传数据边投屏多合一应用

LDR系列PD应用方案讲解之OTG边听边充边传数据边投屏多合一应用

自从2013年USB-IF组织发布USB Type-C标准,2014年乐视发布第一款USB Type-C接口的手机,USB-C接口的普及变成一种不可逆转的趋势。但是,手机没有耳机接口了,怎么实现同时充电音频呢?于是,USB Type-C接口的转接…

2026/7/3 14:25:01 阅读更多 →

最新新闻

AI规模化落地:从概念验证到生产环境的实践指南

AI规模化落地:从概念验证到生产环境的实践指南

1. 从概念验证到规模化落地的鸿沟 在过去的五年里,我作为AI解决方案架构师参与了超过20家企业的人工智能转型项目。一个令人警醒的数据是:根据Gartner统计,约85%的AI试点项目最终未能实现规模化部署。这个数字背后反映的正是我们今天要探讨的…

2026/7/4 18:33:20 阅读更多 →
STM32F303VE与TC78H653FTG驱动有刷电机方案解析

STM32F303VE与TC78H653FTG驱动有刷电机方案解析

1. 为什么选择TC78H653FTGSTM32F303VE组合驱动有刷电机在工业控制和消费电子领域,直流有刷电机因其结构简单、成本低廉、控制方便等优势,至今仍占据重要地位。但要让这种"古老"的电机发挥出现代化性能,驱动电路和控制器选型尤为关键…

2026/7/4 18:31:20 阅读更多 →
零基础网络渗透学习指南:从TCP/IP到实战靶场的完整路径

零基础网络渗透学习指南:从TCP/IP到实战靶场的完整路径

1. 从零到一:网络渗透学习的本质与心态重塑“零基础入门网络渗透到底要怎么学?” 这个问题背后,是无数对网络安全充满好奇,却又被其神秘感和庞杂知识体系吓退的新手最真实的困惑。我见过太多人,一上来就直奔Kali Linux…

2026/7/4 18:29:19 阅读更多 →
AI开发者工作流选型指南:GLM-5、Kimi、MiniMax等6大模型实战对比

AI开发者工作流选型指南:GLM-5、Kimi、MiniMax等6大模型实战对比

1. 这不是模型对比,是开发者工作流的生存指南 你有没有过这种体验:凌晨两点,手机弹出一条短信——“您的API调用额度已超限,当前计费周期剩余余额:0.37”。你猛坐起来,手抖着打开监控面板,发现一…

2026/7/4 18:29:19 阅读更多 →
Si4732与PIC18F86K90在嵌入式音频系统中的应用与优化

Si4732与PIC18F86K90在嵌入式音频系统中的应用与优化

1. 项目背景与核心组件解析在数字音频处理领域,Si4732和PIC18F86K90的组合堪称黄金搭档。作为一名长期从事嵌入式音频系统开发的工程师,我亲身体验过这对组合带来的音质飞跃。Si4732是Silicon Labs推出的高性能数字调谐收音芯片,而PIC18F86K9…

2026/7/4 18:29:19 阅读更多 →
AD74413R与STM32F303RC硬件设计与SPI通信实现

AD74413R与STM32F303RC硬件设计与SPI通信实现

1. AD74413R与STM32F303RC的硬件协同设计AD74413R是一款四通道软件可配置输入/输出器件,每个通道可独立配置为ADC输入、DAC输出、数字输入或数字输出模式。与STM32F303RC搭配使用时,需要特别注意两者的电气特性和接口匹配。1.1 硬件连接要点SPI接口应采用…

2026/7/4 18:23:18 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻