C 中的指针非常强大并且看起来很高效。但是如何使用指针可以让您访问硬件?
我的想法是将指针的值设置为等于硬件的关联对象,而不是通过指针来操作它。但是,如果您已经对硬件的对象和属性有足够的访问权限,可以在其上使用指针,那么指针在哪里发挥作用呢?也许我在想象有什么不对?
我在 Windows 7 上运行。
一个基本示例以及为什么需要指针来操作该硬件属性的解释会很棒。
指针保存一个内存地址。并不是所有的内存寻址范围都单独指向 RAM 区域。内存地址有范围,一些范围映射到硬件寄存器。通过写入这些寄存器,我们可以访问硬件。当然,这也取决于哪个操作系统和哪个硬件。这是一个例子。
大多数硬件都是内存映射的。这意味着它将一系列硬件寄存器(或其他硬件实体)公开为内存区域。可以像访问任何其他内存一样访问这些内存位置。您可以使用内存地址对其进行读取和写入 - 这些读取和写入使事情发生在硬件中。举个例子,对硬件寄存器(内存地址)的写入可能会导致 LED 亮起,或机器人电机开始转动。所有硬件操作都通过此类内存映射寄存器等公开。
现在,指针是允许您访问内存位置的语言实体。您将地址粘贴到指针中并取消引用它以从(或向)该地址读取(或写入)。所以,基本上你操作硬件的方式是通过指针访问它的地址空间。