memcpy如何与void指针一起使用?

时间:2016-09-30 04:57:21

标签: c memcpy

我试图从一个ptr到另一个ptr。我知道我要复制的大小。目标和源指针都是void指针。这有效吗?它是否实际将ELEMENT_SIZE(整数类似于128)从源复制到目标?我知道这不是最理想的事情。但我想知道这是否有效。

memcpy(to_add, element_ptr, ELEMENT_SIZE);

3 个答案:

答案 0 :(得分:1)

  

它是否实际从源复制ELEMENT_SIZE(整数,如128)   到目的地?

是的,如果您知道尺寸信息,那么它的工作正常。

参见参考链接:http://www.cplusplus.com/reference/cstring/memcpy/

答案 1 :(得分:1)

文档中memcpy的参数说明:

  

void * memcpy ( void * destination, const void * source, size_t num );

     

destination:指向要复制内容的目标数组的指针,   type-casted到void *。

类型的指针      

source:指向要复制的数据源的指针,类型转换为const void *类型的指针。

     

num:要复制的字节数。 size_t是无符号整数类型。

memcpy只需从地址num开始占用source个字节,然后将它们从地址destination开始复制到内存中。

指针是固定长度的内存地址,与类型无关。指针是char *(指向字符数据),int *(指向整数数据)还是void *(指向未知类型的数据)无关紧要,它仍然只是指向记忆。

因为memcpy复制了明确的字节数,所指向的数据类型是无关紧要的;它只需要数据的内存地址。

答案 2 :(得分:0)

它究竟是什么指针并不重要。这是一个非常简单的过程,有两个内存地址和一个副本。