内存映射硬件
在某些计算架构上,指针可用于直接操作内存或内存映射设备。
在对微控制器进行编程时,为指针分配地址是一种非常宝贵的工具。下面是一个简单的例子,它声明了一个 int 类型的指针并将它初始化为一个十六进制地址,在这个例子中是常量 0x7FFF:
int *hardware_address = (int *)0x7FFF;
在 80 年代中期,使用 BIOS 访问 PC 的视频功能很慢。显示密集型应用程序通常用于通过将十六进制常量 0xB8000 转换为指向 80 个无符号 16 位 int 值数组的指针来直接访问 CGA 视频内存。每个值由低字节中的 ASCII 码和高字节中的颜色组成。因此,要将字母“A”放在第 5 行第 2 列的亮白色蓝色上,可以编写如下代码:
#define VID ((unsigned short (*)[80])0xB8000)
void foo() {
VID[4][1] = 0x1F00 | 'A';
}
在没有指针的情况下,在 Java/Python 中这样的事情可能吗?
编辑:
这样的访问是否可能:
char* m_ptr=(char*)0x603920;
printf("\nm_ptr: %c",*m_ptr);
?