[经验分享] 为什么嵌入式底层都用C语言

[复制链接]
1481|74
i1mcu 发表于 2025-11-20 16:03 | 显示全部楼层 |阅读模式


2.C语言指针的赋值
int *p;*p=0x2000;  //错误的赋值,会导致程序崩溃或者跑飞  p=0x2000;  //正确的赋值
为什么经过改写后的程序就可以对*p赋值了呢?这里就需要理解*号在指针的定义和指针操作上的区别。
类似现实生活中每个人都有居住空间和居住空间的地址,xx省xx市xx区xx街道xx小区xx楼xx单元xx号。指针p代表的是地址xx省xx市xx区xx街道xx小区xx楼xx单元xx号;*p代表的是地址xx省xx市xx区xx街道xx小区xx楼xx单元xx号所对应的房屋空间,地址是不能住人的,但地址对应的房屋空间是可以住人的。


来一段程序练习一下:
假设有两个整型变量a和b,对应的地址分别是0x2000和0x3000,定义一个指针p,通过指针的方式,将变量a的值改成10,将变量b的值改成20, 如下图示,


int *p;p=0x2000;// 第一步,将指针变量赋值成变量a的地址,指针p就指向了变量a*p=10;    // 第二步,对指针所指向的地址空间(就是变量a空间)进行赋值p=0x3000;  // 第三步,将指针变量赋值成b的地址,指针p就指向了变量b*p=20;    // 第四步,对指针所指向的地址空间(就是变量b空间)进行赋值
[size=normal]第二步




[size=normal]第四步




到这里就完成了通过指针p对变量a和b的值/内容改写。因为嵌入式底层驱动最常用就是对MCU、单片机的寄存器进行读写操作,而MCU、单片机的寄存器就是固定的地址,通过指针能够对地址直接读写操作,简单又效率高的特性,就是为什么嵌入式底层驱动都是C语言编程的主要原因,简直就是嵌入式底层驱动的设计的利器。

mollylawrence 发表于 2025-12-7 09:31 | 显示全部楼层
C语言是ISO标准化语言,语法统一,代码可在不同架构间移植。
gygp 发表于 2025-12-9 11:02 | 显示全部楼层
C语言凭借其高效性、硬件控制能力、可移植性和成熟生态,成为嵌入式底层开发的“通用语言”。
usysm 发表于 2025-12-10 14:39 | 显示全部楼层
C 语言支持内联汇编,可直接插入关键汇编指令
phoenixwhite 发表于 2025-12-10 16:56 | 显示全部楼层
C 语言的指针、地址、位操作等概念与这些硬件抽象天然契合,而面向对象或函数式语言反而增加认知负担。
uiint 发表于 2025-12-11 11:49 | 显示全部楼层
支持指针操作,可直接访问内存地址、寄存器,实现硬件级控制。
tabmone 发表于 2025-12-11 12:26 | 显示全部楼层
函数调用、循环、中断响应时间可静态分析,满足硬实时要求
ingramward 发表于 2025-12-11 19:34 | 显示全部楼层
C语言是编译型语言,编译后生成机器码,执行效率接近汇编语言,但开发效率远高于汇编。
janewood 发表于 2025-12-11 20:27 | 显示全部楼层
与汇编无缝混合              
febgxu 发表于 2025-12-13 20:07 | 显示全部楼层
标准C库提供基础功能,嵌入式专用库简化复杂任务开发。
pentruman 发表于 2025-12-14 12:39 | 显示全部楼层
C语言是编译型语言,编译后直接生成机器码,执行效率接近汇编,远高于解释型语言和高级语言
nomomy 发表于 2025-12-16 16:35 | 显示全部楼层
嵌入式底层开发普遍使用C语言,主要是因为其具备直接访问硬件、高效运行效率和出色可移植性三大核心优势。
chenci2013 发表于 2025-12-16 17:18 | 显示全部楼层
C语言凭借直接硬件操作能力、高效代码生成、结构化编程、成熟生态
minzisc 发表于 2025-12-17 19:04 | 显示全部楼层
C语言编译后生成的机器码体积最小
elsaflower 发表于 2025-12-17 21:37 | 显示全部楼层
C 语言编译后直接生成接近汇编的机器码,几乎没有“隐藏成本”。
wangdezhi 发表于 2026-1-7 21:44 | 显示全部楼层
C语言编译后的二进制代码通常比C++更紧凑
hearstnorman323 发表于 2026-1-8 15:44 | 显示全部楼层
C语言提供直接内存访问和位操作能力,通过指针可以直接操作硬件寄存器,实现精确的底层控制。
mollylawrence 发表于 2026-1-10 11:56 | 显示全部楼层
C语言被称为“可移植的汇编”。              
tifmill 发表于 2026-1-11 18:18 | 显示全部楼层
C语言经编译器直接生成机器码,无虚拟机或解释器开销
lihuami 发表于 2026-1-13 10:19 | 显示全部楼层
C语言凭借其效率、控制力、成熟度的综合优势,仍然是嵌入式底层开发的主流选择。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

287

主题

9149

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部
0