怎么就把它定义成了一个地址了?里面具体使用了多少次宏替换,有多少个指针?
这一点我知道,关键是怎么定义出一个地址为0x1c00000的指针的?
追答(volatile unsigned *) 强制转换为 4 字节地址 指针。
追问那么强制转换括号外面的 * 又怎么理解呢?0x1c00000只是一个指针名么?
追答强制转换括号外面的 * 理解为 (void * )
追问不好意思,可以再详细点么,那就是说这是一个二级指针,理解为一个指向任意类型的指针,该指针又继续指向一个无符号的可被多线程访问、修改的变量,那0x1c00000只是一个二级指针的名字咯?但是在程序中的目的它是要被用来当做一个0x1c00000地址的。
追答需要放入替代后的句子里去理解。
(volatile unsigned *) 0x1c00000 强制转换为 4 字节地址
(*(volatile unsigned *)0x1c00000) 也可以代表一个变量的值,即 0x1c00000地址中的内容。