int* 到void*

bsnry 2012-03-06 04:19:15

将一个int(4字节)的内容拷贝到一个字节数组中。。。。

以下代码是别人的:

unsigned  char  bytesbuffer[32];

int a=1;

memcpy(bytesbuffer,&a,4);


有几个疑问:

1. memcpy这个函数的参数类型前两个是void*

bytesbuffer是unsigned char*

&a是int* ,能够正确的拷贝吗?

2. int*会自动转换为void* ,隐士转换,

void* 惭愧,平时没用到过,引入有什么用途?

...全文
180 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lirunfa 2012-03-06
  • 打赏
  • 举报
回复
int是4个字节 实际也就是连续的4个字节的地址空间
任意数据类型可以转换为void *
从头来过 2012-03-06
  • 打赏
  • 举报
回复
void* 可以转化成任意格式的*
自信男孩 2012-03-06
  • 打赏
  • 举报
回复
恩,是隐式类型转换,void *类型的数据可以隐式转换成其它数据类型,比如int *, unsigned char *等等。
bsnry 2012-03-06
  • 打赏
  • 举报
回复
我还以为他的用法是错误的呢
xiyoulaoyuanjia 2012-03-06
  • 打赏
  • 举报
回复
1.可以 void * 可以接收任何类型指针
2. 这事一种泛型编程的方法,考虑 如何要接收 long * 类型的是不是还应该在重载一个函数呢? 显然这样做简化了函数设计!
东莞某某某 2012-03-06
  • 打赏
  • 举报
回复
1 ,A pointer to void can be converted to or from a pointer to any type, without restriction or loss of information.

2,正像你的用法,可以传char* int*。。。。等等,可以起到模板的作用,具通用性。很多C运行库函数都用了void * ,包括线程函数的参数:LPVOID
pengzhixi 2012-03-06
  • 打赏
  • 举报
回复
void*能够接收任何类型。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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