我试图从一个ptr到另一个ptr。我知道我要复制的大小。目标和源指针都是void指针。这有效吗?它是否实际将ELEMENT_SIZE(整数类似于128)从源复制到目标?我知道这不是最理想的事情。但我想知道这是否有效。
memcpy(to_add, element_ptr, ELEMENT_SIZE);
答案 0 :(得分:1)
它是否实际从源复制ELEMENT_SIZE(整数,如128) 到目的地?
是的,如果您知道尺寸信息,那么它的工作正常。
答案 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)
它究竟是什么指针并不重要。这是一个非常简单的过程,有两个内存地址和一个副本。