+ -
当前位置:首页 → 问答吧 → memcpy 第2个参数使用常数,怎么进行类型转换

memcpy 第2个参数使用常数,怎么进行类型转换

时间:2011-11-24

来源:互联网

C/C++ code

memcpy(lpAddr,12345,4);   //12345非内存地址

//需要实现的是将 12345这个数值,写入lpAddr地址中,
//不能另外申明变量
//也不能在第2个参数中借用lpAddr这个变量
//在12345这个前面要用什么符号进行转换才能实现呢??

作者: SilenceNet   发布时间: 2011-11-24

sprintf((char*)lpAddr, "%d", 12345);

作者: leegoex   发布时间: 2011-11-24

引用 1 楼 leegoex 的回复:
sprintf((char*)lpAddr, "%d", 12345);

这个不可以的,仅限memcpy,再者说你这个是不同的,你这放的是字符串,我需要的是值。

作者: SilenceNet   发布时间: 2011-11-24

*(int *)lpAddr = 12345;

作者: lazy_2010   发布时间: 2011-11-24

引用 3 楼 lazy_2010 的回复:
*(int *)lpAddr = 12345;

不可以的,这里的代码仅供参考,不能直接使用指针读写,一定要使用memcpy

作者: SilenceNet   发布时间: 2011-11-24

//在12345这个前面要用什么符号进行转换才能实现呢??
============
12345是常量,怎么转啊?

作者: wltg2001   发布时间: 2011-11-24

引用 5 楼 wltg2001 的回复:
//在12345这个前面要用什么符号进行转换才能实现呢??
============
12345是常量,怎么转啊?

我记得好像有转法的,应该没记错的啊 -.-
那如果把12345换成 一个函数名,我需要把这个函数地址写进去呢? 那有办法吗?
C/C++ code

memcpy(&dwVal,testfun,4); //testfun是函数名,如果想要把testfun的函数地址写进dwVal中去,可以转吗?
也仅限使用memcpy

作者: SilenceNet   发布时间: 2011-11-24

测试出来玩玩.
C/C++ code

//int hiByte = HIBYTE(12345);
//int loByte = LOBYTE(12345);
memcpy(lpAddr, (const int*)("90"), sizeof(int)/2);


作者: yuucyf   发布时间: 2011-11-24

不借助特殊手段,可以这样
memcpy(t,"\x01\x02\x03\x04",4);

作者: gameslq   发布时间: 2011-11-24

是 memcpy(lpAddr,"\x01\x02\x03\x04",4);

作者: gameslq   发布时间: 2011-11-24