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

[复制链接]
122|0
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语言编程的主要原因,简直就是嵌入式底层驱动的设计的利器。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

280

主题

8869

帖子

10

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