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的内存地址.我尝试以某种不同的方式进行铸造/解除引用,但无法使其工作......
它是如何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)