如何在特定地址创建对数组的引用?
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 0x00004040
,sizeof(FDS_WAV)
将 return 64
.
在 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 0x00004040
,sizeof(FDS_WAV)
将 return 64
.