zoukankan      html  css  js  c++  java
  • (笔记)往一个指定的地址读写一个值

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

    举例:

    (向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

  • 相关阅读:
    PLSQL Developer使用技巧整理
    PLSQL DEVELOPER 使用的一些技巧【转】 .
    MYEclipse Available Memory is low 警告 解决方法
    myeclipse安装svn插件的多种方式
    MySql的存储过程和触发器
    springmvc学习及源码地址
    spring源码下载链接
    struts2源码下载链接
    个人总结的常用java,anroid网站
    Java生成扫描可以生成手机号名片的二维码
  • 原文地址:https://www.cnblogs.com/tdyizhen1314/p/2431147.html
Copyright © 2011-2022 走看看