我想收到一个DWORD类型的变量,它将包含地址指针float * 如果我写这个:
float *Object = 5;
std::cout << &Object;
它给了我我想要的价值(即:0F235C1A
)。
你能告诉我如何将这个值分配给DWORD,以便在我的Memory Write功能中使用它吗?
尝试:
DWORD ObjAddress = &Object;
我收到编译错误:cannot convert from 'float *' to 'DWORD'
答案 0 :(得分:1)
您只需要投射&amp; Object;
DWORD ObjAddress = (DWORD)&Object;
我认为这将解决您的问题。
答案 1 :(得分:1)
我认为你可以像这样使用reinterpret_cast(用DWORD替换unsigned long)
#include <iostream>
int main(void)
{
float *object = new float;
*object = 5;
unsigned long objAddress = reinterpret_cast<unsigned long>(&object);
std::cout<<objAddress<<std::endl;
return 0;
}
答案 2 :(得分:1)
我不理解你的对象定义:
float *Object = 5;
5应该是一个地址?值?
请参阅以下代码,也许这就是您想要的。
float Object = 5;
int ObjAddress = (int)&Object;
cout << "object adr1: "<< hex << &Object << endl;
cout << "object adr2: "<< hex << ObjAddress << endl;
输出
object adr1: 0x28ff08
object adr2: 28ff08
或者当你真的需要将对象作为指针
时float value = 5;
float *Object = &value;
int ObjAddress = (int)&Object;
cout << "object adr1: "<< hex << &Object << endl;