关于C语言,这语句怎么理解?

来源:百度知道 编辑:UC知道 时间:2024/07/05 01:26:54
#define rGPGCON (*(volatile unsigned *)0x56000060)

怎么理解?

首先是个宏定义

看看后面的语句:0x56000060 表示的是一个四字节的16进制数,它不是指针,但是可以转换成指针类型,因为指针类型就是一个四字节的整形数 所以
(volatile unsigned *)0x56000060 表示将0x56000060 转换成一个指向volatile unsigned类型的指针 , 既然已经转换成指针了 ,那么在指针前面加* 就是指针所指向的单元中的值

本题表示的是: 内存地址为0x56000060的unsigned类型单元的值

#difine是宏定义,含义是把rGPGCON定义为(*(volatile unsigned *)0x56000060)
也就是说,以后再文中出现rGPGCON的时候,编译器将自动把他替换为
(*(volatile unsigned *)0x56000060)
至于(*(volatile unsigned *)0x56000060)的意思,可以从内到外一层层分析。(volatile unsigned *)是一个强制类型转换,将0x56000060转换成volatile unsigned *类型。估计是一个指针。随后再用*取得这个指针内包含的内容。

宏定义。。
首先是一个指针。然后他是指向。。。。的

是不是定义rGPGCON为0x56000060地址所指向的值

#define rGPGCON (*(volatile unsigned *)0x56000060)

这是个宏定义,定义一个指向内存地址单元0x56000060的指针rGPGCON;
(volatile unsigned *) : unsigned 表示这是一个无符号数,volatile表示易失存储器,如RAM、内存等

长知识了