C语言构造数据类型(2)、位运算以及内存管理
上次学习我们了解到了构造数据类型的结构体本次学习继续围绕构造数据类型剩下部分、位运算与程序内存管理三大模块展开这些内容是C语言区别于高级语言的底层特性也是嵌入式开发、底层编程的基础核心。一、构造数据类型结构体与共用体结构体struct是C语言中用来组合不同数据类型的自定义类型结构体中的每个成员都会占用独立的内存空间整体内存大小受内存对齐规则影响常用来管理一组关联数据比如学生信息、设备参数等。共用体union也叫联合体和结构体不同它的所有成员共用同一块内存空间整体内存大小由占用空间最大的成员决定。利用共用体的内存特性给共用体的字符成员赋值1读取整型成员的数值即可判断当前内存的字节存储顺序。大小端模式小端模式内存低地址存放数据的低位字节高地址存放高位字节大端模式内存低地址存放数据的高位字节高地址存放低位字节。枚举类型enum枚举用于给一组整型常量赋予可读性强的名称所有枚举常量的底层类型均为int。默认情况下第一个枚举常量值为0后续枚举常量的值依次在前一个基础上加1。使用枚举替代固定的数字能大幅提升代码可读性在分支判断、状态标识场景中应用广泛。二、位运算位运算是直接对变量的二进制位进行操作的运算方式执行效率远高于普通算术运算是底层寄存器操作、硬件开发的必备技能。常用位运算符C语言提供6种基础位运算符按位与、按位或|、按位异或^、按位取反~、左移、右移。位运算将变量第n位置1利用按位或运算执行语句 num | (1 n);将变量第n位清零利用按位与运算执行语句 num ~(1 n);无需临时变量交换两个整数借助异或运算的特性通过三行代码 a a ^ b; b a ^ b; a a ^ b; 完成数值交换移位运算可快速实现乘除2的幂次运算左移一位等价于数值乘以2右移一位等价于数值除以2。三、C语言程序内存分布C语言程序运行时内存会被划分为多个功能区域由操作系统和程序员共同管理从低地址到高地址主要分为以下几个部分文本区.text存放程序编译后的机器指令、函数代码该区域为只读属性防止程序指令被恶意修改数据区包含初始化全局变量、静态变量的.data段以及未初始化全局变量、静态变量的.bss段变量在程序运行前就完成内存分配堆区heap由程序员手动管理通过malloc函数申请内存free函数释放内存若申请的内存未及时释放会造成内存泄漏栈区stack存放函数局部变量、函数形参、函数返回地址由系统自动分配与回收函数执行结束后栈空间自动释放局部变量随之失效。理解内存分区的规则能够清晰区分变量的生命周期、作用域有效规避野指针、内存越界、内存泄漏等常见编程问题。本次学习的知识点覆盖了C语言自定义类型、底层位操作、内存管理三大核心板块这些内容脱离了表层的语法使用深入到程序运行的底层逻辑。掌握这些知识不仅能规范代码编写习惯也能为后续嵌入式开发、驱动开发等进阶学习打下坚实的基础。

相关新闻

深入解析Xilinx 7系列FPGA GTXE2_COMMON:高速串行通信的核心基石

深入解析Xilinx 7系列FPGA GTXE2_COMMON:高速串行通信的核心基石

1. 从“黑盒”到“白盒”:理解FPGA高速串行通信的基石在FPGA的世界里,尤其是当你的设计开始触及高速串行接口(比如PCIe、SATA、以太网10G/25G)时,你总会遇到一个绕不开的名字:GTXE2_COMMON。对于很多刚接触…

2026/8/11 16:39:19 阅读更多 →
Illustrator脚本开发实战:自动角线生成与印刷流程优化

Illustrator脚本开发实战:自动角线生成与印刷流程优化

1. 从手动到自动:为什么我们需要一个角线脚本?如果你在印刷、包装设计或者任何需要将数字设计稿转化为实体印刷品的领域工作过,那么“角线”这个词对你来说一定不陌生。它也叫“裁切线”或“出血线”,是印在印刷品边缘、用于后期裁…

2026/8/11 12:30:36 阅读更多 →
从用户到创造者:技术人如何逆向工程黑盒系统并掌握协议设计

从用户到创造者:技术人如何逆向工程黑盒系统并掌握协议设计

你有没有想过,为什么历史上那些看似由人类帝王将相主导的宏大叙事,其背后总有一些难以解释的、超越时代的“巧合”与“智慧”?为什么某些关键的技术突破、制度设计或文化符号,总能在不同文明、不同时期,以惊人的相似性…

2026/8/11 12:23:43 阅读更多 →

最新新闻

Linux 查看磁盘空间的du和df命令

Linux 查看磁盘空间的du和df命令

目录一. du 查看磁盘空间占用情况1.1 -h:以人类可读的格式显示文件大小1.2 👍-s:仅显示总计大小1.3 --max-depth:指定文件夹的层级1.4 👍按从体积大到小的顺序显示文件夹1.5 👍按照从大到小的顺序列出指定文…

2026/8/11 16:41:16 阅读更多 →
显卡驱动更新反复失败怎么办?梳理6种常见原因与完整的排查思路

显卡驱动更新反复失败怎么办?梳理6种常见原因与完整的排查思路

近期不少用户反映,显卡驱动更新过程中总会遇到各种阻碍,要么进度条卡住报错,要么安装后屏幕分辨率异常,甚至直接黑屏。更新失败的背后涉及驱动版本、系统环境、残留文件、安全软件等多重因素,每种情况都有对应的排查路…

2026/8/11 16:41:16 阅读更多 →
DirectX安装失败按什么顺序排查?从报错码反推,逐个解决

DirectX安装失败按什么顺序排查?从报错码反推,逐个解决

不知道你有没有过这种经历:新买的游戏满怀期待地下载安装,双击图标,结果没等来画面,先弹出一长串看不懂的报错。 那种感觉特别难受。什么都准备好了,却被一个弹窗钉在原地,连游戏的大门都进不去。很多时候…

2026/8/11 16:41:16 阅读更多 →
VNC:Ubuntu22.04安装

VNC:Ubuntu22.04安装

Ubuntu(20.04):安装VNC_ubuntu安装vnc-CSDN博客 Ubuntu20.04上安装VNC与Ubuntu22.04安装VNC略有不同,试了很久才终于成功。 1.在Ubuntu22.04的终端里安装tightvncserver sudo apt install tigervnc-standalone-server 2.在Ubuntu22.04的终端里安装gnome-panel</

2026/8/11 16:41:16 阅读更多 →
人机大战or双人五子棋,C语言实现,附源码

人机大战or双人五子棋,C语言实现,附源码

前言C语言实现较简单的五子棋游戏&#xff0c;AI算法比较简单但应该能玩赢普通人的吧&#x1f609;&#xff08;作者比较菜&#xff0c;能玩赢作者&#xff09;现在让我们开始创作创作思路首先&#xff0c;我们要有一个棋盘。用easyx开辟一个窗口&#xff0c;然后加载一张图片&…

2026/8/11 16:41:16 阅读更多 →
mysql原理--单表访问方法

mysql原理--单表访问方法

1.概述 MySQL Server 有一个称为 查询优化器 的模块&#xff0c;一条查询语句进行语法解析之后就会被交给查询优化器来进行优化&#xff0c;优化的结果就是生成一个所谓的 执行计划 &#xff0c;这个执行计划表明了应该使用哪些索引进行查询&#xff0c;表之间的连接顺序是啥样…

2026/8/11 16:40:15 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升&#xff1a;AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析&#xff1a;控制台与Apifox的数据差异 最近在调试一个前后端分离项目时&#xff0c;遇到了一个典型问题&#xff1a;后端服务在本地开发环境控制台能正常输出查询数据&#xff0c;但通过Apifox测试时却返回空结果。这种"控制台有数据&#xff0c;接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友&#xff0c;尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友&#xff0c;都在问我同一个问题&#xff1a;“听说现在用Claude Code这种AI编程工具&#xff0c;小白也能做游戏了&#xff0c;是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑&#xff1a;baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码&#xff08;维护中 rm repo&#xff09; 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片&#xff1a;Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身&#xff0c;而应重视模型外的系统搭建&#xff0c;即Harness。提出AgentModelHarness的实用公式&#xff0c;详细介绍Harness的四个层次&#xff1a;持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →