对内存中数组的引用
Reference to array in memory
我有这个内存布局:
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风格的强制转换让它显得无辜。在我看来,这样的事情应该引人注目。
我会选择c风格的指针。但是如果你真的想用c++的方式(它不是,不比你在问题中提出的更多):
template<typename T, size_t S>
using arr = T[S];
auto& my_arr = *reinterpret_cast<arr<int,2>*>(0x18FBDA);
是
的一个更清晰的符号auto& my_arr = *reinterpret_cast<int(*)[2]>(0x18FBDA);
相关文章:
- 关于引用数组位置的问题
- 使用指针交换而不引用数组C++
- 对于Boost.Propertytree,有没有办法使用JSON点表示法来引用数组元素?
- 如何在递归函数中调用引用数组?
- 动态指针引用数组由三元运算符返回值,但有异常
- 为什么没有 std::string 构造函数来引用数组
- 指针/引用数组
- 错误 C2234:引用数组是非法的
- 引用数组的方法
- 通过引用数组值进行交换
- 引用数组涉及的技术问题
- 引用数组的函数调用
- 从其他类中的类引用数组
- 如何使用变量名称引用数组位置
- 在 OpenGL 中呈现三角形结构引用数组
- 如何取消引用数组元素(C++)
- c++引用数组数组(指针到指针?)
- 指向指针的指针如何能够引用数组
- C++取消引用数组
- c++中引用数组中对象的共享指针