如何获取浮动地址与memcpy一起使用?

Zax*_*Ftw 0 c c++ pointers memcpy memory-address

我正在尝试用float变量的内存地址填充byte/char数组(数组长度是4个字节=指针),但无论我做什么它都会保持浮点值而不是地址:

float f = 20.0f;

memcpy(data, &f, sizeof(data));
Run Code Online (Sandbox Code Playgroud)

调试它:

printf("Array: %#X, %#X, %#X, %#X", data[0], data[1], data[2], data[3]);
Run Code Online (Sandbox Code Playgroud)

...以十六进制格式给出浮点值(20.0):

Array: 0, 0, 0XA0, 0X41
Run Code Online (Sandbox Code Playgroud)

我需要的是float的内存地址.我尝试以某种不同的方式进行铸造/解除引用,但无法使其工作......

And*_*hko 5

它是如何memcpy工作的:它需要一个指向它将复制的数据的指针.您的数据是指向float的指针,因此您需要将指针传递给指向float的指针:

#include <cstring>

int main() {
   float f = 20.0f;
   float* pf = &f;
   char data[sizeof(pf)];
   memcpy(data, &pf, sizeof(data));
}
Run Code Online (Sandbox Code Playgroud)

  • 建议`char data [sizeof pf]`而不是幻数 (3认同)