memcpy内存拷贝函数

强烈推荐,安全性、通用性更高 下面以组装double类型为例:

#include <string.h> //包含memcpy函数
 
//假设recv_buf是接收缓冲区,已经存好8字节原始数据
unsigned char recv_buf[8] = {..........};
double result;
 
//关键:将8字节内存拷贝到double变量中
memcpy(&result,recve_buf,sizeof(double));

指针强制转换

简洁,但需要注意内存对齐

[!内存对齐] 如:double的对齐要求通常是8字节,既内存地址必须是8的整数倍

recv_buf数组的地址不是8的整数倍时,就会触发内存对齐错误,可能会导致程序崩溃或者数据读取异常

依旧是以double类型的组装为例:

//假设recv_buf是接收缓冲区,已经存好8字节原始数据
unsigned char recv_buf[8] = {..........};
double result;
 
//关键:强制转换指针类型并取值
result = *((double *)recv_buf);
 
//提醒:部分平台可能存在内存对齐问题,强烈推荐使用更通用的memcpy