C ++分配一个变量指针地址

时间:2015-06-25 11:26:51

标签: c++ pointers

我想收到一个DWORD类型的变量,它将包含地址指针float * 如果我写这个:

float *Object = 5;  
std::cout << &Object;

它给了我我想要的价值(即:0F235C1A)。 你能告诉我如何将这个值分配给DWORD,以便在我的Memory Write功能中使用它吗? 尝试:

DWORD ObjAddress = &Object;

我收到编译错误:cannot convert from 'float *' to 'DWORD'

3 个答案:

答案 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;