c++ - 引用内存中的数组

标签 c++

<分区>

我有这样的内存布局:

0018FBD2 ?? ?? ?? ??    ?? ?? ?? ??
0018FBDA AA AA AA AA    BB BB BB BB  <- stuff I'm interested in
0018FBE2 ?? ?? ?? ??    ?? ?? ?? ??

在 C 中,我会这样做:

int* my_array = (int*) 0x18FBDA;
my_array[0]; // access

但是,我使用的是 C++,我想声明一个引用:

int (&my_array)[2] = (???) 0x18FBDA;

为了像这样使用:

my_array[0]; // access

但是如你所见,我不知道如何转换它:

int (&my_array)[2] = (???) 0x18FBDA;

我应该怎么做?有可能吗?

最佳答案

我发现使用数组引用的概念有点复杂,就像 tadman 提到的那样。但是您可以通过取消引用指针来像处理任何类型一样执行此操作。

int (&my_array)[2] = *reinterpret_cast<int(*)[2]>(0x18FBDA);

此外,如果您要进行此类转换,请不要通过进行 C 风格转换让它显得无辜。这样的事情应该在 IMO 中脱颖而出。

关于c++ - 引用内存中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39882955/

相关文章:

c++ - 指针和双转换错误,代码没有

c++ - glDrawElements 中的索引参数是什么意思?

c++ - 为什么一些标准运算符没有标准仿函数?

c++ - 有没有办法结合 Qt-Creator + Boost 库?

c++ - 来自 curl++ 的 POST 数据不发送

C++ 域特定的嵌入式语言运算符

c++ - 在 C++ 中从文本文件快速创建图形

c++ - 您将如何从结构中随机选择路径?

c++在线程之间共享状态的最佳方式

c++ - OS X 系统日志忽略 setlogmask 并且只记录错误