(笔记)往一个指定的地址读写一个值

 

一、如何往一个指定的地址写入一个值呢?

 

举例:

(向0x2000100001处写入值0x12345678):

 

*(unsigned int *)0x20010000 = 0x12345678;

 

分析:

1、0x20010000是待写入的地址。

2、(unsigned int *)0x20010000是将0x20010000这个地址内存的数强制转换为unsigned int类型,当然也可以是unsigned char、signed short int类型等等,根据你实际需要而定。

3、0x12345678是待写入的值。

4、在地址的前面在加一个“*”,就可以将此值写入该地址了。“*”的作用相当于开锁的作用,将柜子打开,你可以往里面放书、也可以放被子、当然也可以放零食,关键看你怎么使用(一定要进行强制类型转换)。

 

注:以上仅是示例,不考虑大端模式与小端模式。

附加:

如何定义一个指针指定到一个具体的地址呢?

如定义一个unsigned int类型的指针指向具体地址0x20010000:

unsigned int *p = (unsigned int *)0x20010000; 这样就可以了。

 

上条语句相当于:

unsigned int *p;

p = (unsigned int *)0x20010000;

 

 

二、如何从一个指定的地址读出一个值呢?

 

其实操作跟写差不多,以上文地址0x20010000为例,如果以字节访问方式读取的话,可以这么做:

unsigned char rvalue = *(unsigned char *)0x20010000;

此时rvalue就是读取到的0x20010000地址上的数据了,当然,如果是双字节或四字节的数据,则为:

unsigned short rvalue = *(unsigned short*)0x20010000;

unsigned long  rvalue = *(unsigned long* )0x20010000;

 

 

哈哈,很简单吧!

 

作者:tdyizhen1314

        (现从事LED行业,专注于户外大型LED显示屏控制系统的研发,希望与大家一起交流,共同进步)

邮箱: 495567585@qq.com  

       td.logic@hotmail.com

posted on   tdyizhen1314  阅读(2234)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2012年4月 >
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 1 2 3 4 5
6 7 8 9 10 11 12

导航

统计

点击右上角即可分享
微信分享提示