赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
提示:这里可以添加本文要记录的大概内容:
volatile unsigned int * pointer = (unsigned int *)0x40028000;
volatile 防止编译器对寄存器进行优化。
* pointer +=1;
* pointer +=2;
可能直接被优化为
* pointer +=3;
volatile unsigned int * pointer = (unsigned int *)0x40028000;
//unsigned int * 定义指针类型的变量
//(unsigned int *)0x40028000 强制类型转换,将立即数转换为指针类型
该行代码也可以通过宏定义来实现:
#define pointer (volatile unsigned int *)0x40028000
由于在定义变量会占用内存,通过宏定义来实现只是简单的文本转换节省内存。
参考文档https://blog.csdn.net/m0_53558236/article/details/120190243
int main()
{
int a = 10;
int * p = &a;
int b = *p;
*p = 20; //解引用操作符
printf("a=%d\n", a);
return 0;
}
& 取地址,int * p = &a 即把a变量的地址放在指针类型变量p中。
int b = p p解引用,将p地址中存放的数据给b,这个存放的数据就是a,即是10,故b=10;
前边已经说了p其实就是a,所以p = 20即a = 20;
提示:这里对文章进行总结:
第一篇文章,用起来还是不错,记录学习笔记,脚踏实地,积跬步,至千里。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。