对(volatile unsigned char *)分析

对于(volatile unsigned char *)0x20,它是由两部分组成:


  1. (unsigned char *)0x20,0x20只是个值,前面加(unsigned char *)表示0x20是个地址,而且这个地址类型是unsigned char ,
    意思是说读写这个地址时,要写进unsigned char 的值,读出也是unsigned char 。

  1. volatile,关键字volatile 确保本条指令不会因C 编译器的优化而被省略,且要求每次直接读值。例如用while((unsigned char *)0x20)时,
    有时系统可能不真正去读0x20的值,而是用第一次读出的值,如果这样,那这个循环可能是个死循环。用了volatile 则要求每次都去读0x20的实
    际值。

  • (volatile unsigned char *)0x20是一个固定的指针,是不可变的,不是变量。而char *u则是个指针变量。
    而 *(volatile unsigned char *)0x20 则变成了变量(普通的unsigned char变量,不是指针变量),
  • 如果#define i (*(volatile unsigned char *)0x20),那么与unsigned char i是一样了,只不过前面的i的地址是固定的。

(*(volatile unsigned char *)0x20)可看作是一个普通变量,这个变量有固定的地址,
指向0x20。而0x20只是个常量,不是指针更不是变量。


作者:ysdaniel
来源:CSDN
原文:https://blog.csdn.net/ysdaniel/article/details/6667244

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值