具有特定地址的指针声明

时间:2014-02-13 09:05:28

标签: c pointers

考虑一下:

(volatile unsigned long *) 0x4000703C

这句话是否意味着我们将指针指向地址0x4000703C?和

#define STEPPER (*((volatile unsigned long *)0x4000703C))

void Step(void){
  STEPPER = 10;
  STEPPER = 9;
  STEPPER = 5;
  STEPPER = 6;
}

STEPPER是地址0x4000703C处指针的顺序,我们直接写入0x4000703C。这是对的吗?

3 个答案:

答案 0 :(得分:2)

  

这个陈述是否意味着我们声明了一个指向地址的指针

不,声明包含标识符,在本例中为变量名称。你有一个操作,它将一个整数强制转换为指针类型,指向0x4000703C。什么都没有宣布。

  

STEPPER是地址0x4000703C处指针的延迟,我们直接写入0x4000703C。这是对的吗?

是。 0x4000703C的内存当然完全是系统特定的。

答案 1 :(得分:1)

您正在虚拟内存中直接写入该地址,是的。

答案 2 :(得分:0)

该技术广泛用于嵌入式系统编程以定义硬件寄存器。

更新

以防万一,可能想了解更多关于在嵌入式系统领域使用此技术的人: