(*(volatile unsigned *)
来源:互联网 发布:python uiautomator 编辑:程序博客网 时间:2024/05/17 04:41
(unsigned char *)0x5F,AVR的SREG是八位寄存器,所以0x5F强制转换为指向
unsigned char
对于(volatile unsigned char *)0x20我们分析一下,它是由两部分组成:
1)(unsigned char *)0x20,0x20只是个值,前面加(unsigned char *)表示0x20是个地址,而且这个地址类型是unsigned char ,意思是说读写这个地址时,要写进unsigned char 的值,读出也是unsigned char 。
2)volatile,关键字volatile 确保本条指令不会因C 编译器的优化而被省略,且要求每次直接读值。例如用while((unsigned char *)0x20)时,有时系统可能不真正去读0x20的值,而是用第一次读出的值,如果这样,那这个循环可能是个死循环。用了volatile 则要求每次都去读0x20的实际值。那么(volatile unsigned char *)0x20
是一个固定的指针,是不可变的,不是变量。而char
=》(*(volatile unsigned char *)0x20)可看作是一个普通变量,这个变量有固定的地址,指向0x20。而0x20只是个常量,不是指针更不是变量
文章二
1. volatile变量可变允许除了程序之外的比如硬件来修改他的内容
2. 访问该数据任何时候都会直接访问该地址处内容,即通过cache提高访问速度的优化被取消
对于(volatile unsigned char *)0x20我们再分析一下,它是由两部分组成:
1)(unsigned char *)0x20,0x20只是个值,前面加(unsigned char *)表示0x20是个地址,而且这个地址类型是unsigned char ,意思是说读写这个地址时,要写进unsigned char 的值,读出也是unsigned char 。
2)volatile,关键字volatile 确保本条指令不会因C 编译器的优化而被省略,且要求每次直接读值。例如用while((unsigned char *)0x20)时,有时系统可能不真正去读0x20的值,而是用第一次读出的值,如果这样,那这个循环可能是个死循环。用了volatile 则要求每次都去读0x20的实际值。
那么(volatile unsigned char *)0x20是一个固定的指针,是不可变的,不是变量。而char
再在前面加"*":*(volatile unsigned char *)0x20则变成了变量(普通的unsigned char变量,不是指针变量),如果#define i (*(volatile unsigned char *)0x20),那么与unsigned char i是一样了,只不过前面的i的地址是固定的。
那么你的问题就可解答了,(*(volatile unsigned char *)0x20)可看作是一个普通变量,这个变量有固定的地址,指向0x20。而0x20只是个常量,不是指针更不是变量。
- (*(volatile unsigned *)
- (*(volatile unsigned long *)
- ( *(volatile unsigned long * ) )
- (*(volatile unsigned long *)
- (*(volatile unsigned long *)详解
- (*(volatile unsigned long *)详解
- (*(volatile unsigned int *))
- (*(volatile unsigned long *)心得体会
- *(volatile unsigned long *) 语法
- (*(volatile unsigned long *) 地址)
- (*(volatile unsigned long *)
- *(volatile unsigned long *) 语法
- (*(volatile unsigned long *)详解
- (*((volatile unsigned short *) 0x83200000))
- (volatile unsigned int *)的理解
- (*(volatile unsigned int *))详解
- (*(volatile unsigned int *))详解
- 对(volatile unsigned char *)分析
- outline创建使用
- android sdk manager 无法更新
- CustomValidation in ASP.NET MVC
- CentOS6.4登录和交互shell及系统环境变量设置概述
- HDU 4055 Number String (dp的思想)
- (*(volatile unsigned *)
- CodeForces Round 176Div1 A Lucky permutation
- android字体加粗的方法
- HTML5画布kineticjs花键教程
- 关于如何下载E都市三维地图的教程
- 【转载】Linux下到Lamp安装配置
- linux下添加tomcat服务
- 关于C++ 引用
- 二叉搜索树的创建、遍历、插入、删除(C++版本)