memcpy 和 强制类型转换有什么区别啊?

dream_and_life_szy 2008-11-15 09:02:45
int a = 8;
char b = 'c';

memcpy(&b,&a,sizeof(b));
b = (char)a;

有什么区别啊?
...全文
510 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
BaihowFF 2008-11-15
  • 打赏
  • 举报
回复
memcpy是不管类型的..只管每个二进制位拿来拷贝就可以了
zxianrong 2008-11-15
  • 打赏
  • 举报
回复
4楼正解啊
neurobot 2008-11-15
  • 打赏
  • 举报
回复
上面把你的代码稍微修改了一下
neurobot 2008-11-15
  • 打赏
  • 举报
回复
	char a = 'c'; 
int b = 8;
memcpy(&b,&a,sizeof(b));// 第1句 b = 63 cc cc ccH
b = (int)a;//第2句 b = 63 00 00 00H

&a = 0x0013FF63
&b = 0x0013FF54
执行第1句 之前

执行第1句 之后,执行第2句 之前

执行第2句之后

xhs_lh04 2008-11-15
  • 打赏
  • 举报
回复
memcpy不涉及类型,从源地址按字节拷贝内容到目标地址
强制类型转换,将变量转换成目标类型赋给对方
piaomiaoju 2008-11-15
  • 打赏
  • 举报
回复
memcpy(&b,&a,sizeof(b));
这个是从a的地址开始,复制sizeof(b)那么多的东西到b指向的内存


星羽 2008-11-15
  • 打赏
  • 举报
回复
你运行以下这个例子就知道了


#include "stdlib.h"

int main()
{
int a = 1;
float f;

memcpy(&f, &a, sizeof(f));
printf("%f\n", f);

f = (float)a;
printf("%f\n", f);

return 0;
}

太乙 2008-11-15
  • 打赏
  • 举报
回复

memcpy(&b,&a,sizeof(b));
这个是从b的地址开始,复制sizeof(b)那么多的东西到a指向的内存

b = (char)a;

这个是截取a的低八位给b赋值




69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧