例如,我有:
pop
我想将 DWORD pointer = 0x123456;
DWORD offset = 0xABC;
添加到指针,并将该指针所指向的地址处的值设置为offset
。如何将1.0f
指针和偏移量作为第一个参数?
答案 0 :(得分:1)
DWORD与uint32_t相同。只需将它们与任何其他整数一起添加即可。
另外,在设置浮点数时(我假设你因为'1.0'之后的'f'而设置浮点数),我不会使用memset。只需将指针转换为浮点数,然后将其取消引用:
DWORD pointer = 0x123456;
DWORD offset = 0xABC;
pointer += offset;
float* float_pointer = reinterpret_cast<float*>(pointer);
*float_pointer = 1.0f;
答案 1 :(得分:0)
这可以是直接的指针算法,但我们首先要处理一些初步问题。
pointer
变量声明为DWORD
?我们最终需要一个合适的指针类型。memset
? memset
设置普通位模式;它对浮点数没什么好处。offset
应该以字节为单位,而不是sizeof(float)
。无论如何,计算你想要的指针可能是这样的:
float *fp = (float *)(pointer + offset);
[注意我在转换之前在parens中执行添加,以便获得字节偏移量。如果我改为写(float *)pointer + offset
,它会被`sizeof(float)。[/ p>]所抵消
一旦我们得到了浮动指针,我们就可以通常的方式将它指向的位置设置为1.0
:
*fp = 1.0f;
或者我们可以使用memset将其设置为0:
memset(fp, 0, sizeof(float));