如何在特定地址创建对数组的引用?

How do you create a reference to an array at a certain address?

在 C++ 中,可以创建引用内存地址的变量。

volatile uint8_t& PPUSTATUS = *(volatile uint8_t*)0x2000;

这对于内存映射 I/O 或硬件保留内存区域之类的东西非常有用,尤其是对于嵌入式系统。
您甚至可以创建指向内存区域的指针。

volatile uint8_t*& FDS_WAV = *((volatile uint8_t**)0x4040);

但是,是否可以在内存地址处创建对数组的引用?

uint8_t(&FDS_WAV)[64] = (uint8_t(&)[64])(*(uint8_t**)0x4040);

这将在地址 0x4040.
处创建一个 64 uint8_t 的数组 &FDS_WAV 将 return 0x00004040sizeof(FDS_WAV) 将 return 64.