我正在尝试从一个指针复制到另一个指针。我知道要复制的大小。目标和源指针都是void指针。这样做有效吗?它实际上会将ELEMENT_SIZE(如128的整数)从源复制到目标吗?我知道这不是最理想的做法。但我想知道这是否可行。
memcpy(to_add, element_ptr, ELEMENT_SIZE);
它是否实际上将 ELEMENT_SIZE(如128的整数)从源复制到目标?
是的,如果你知道大小信息,它就可以正常工作。
从文档中了解到 memcpy
的参数描述:
void * memcpy ( void * destination, const void * source, size_t num );
destination
: 目标数组的指针,用于存储要复制的内容,类型转换为 void* 指针。
source
: 数据源的指针,用于存储要复制的数据,类型转换为 const void* 指针。
num
: 要复制的字节数。size_t 是无符号整型。
memcpy
简单地从地址 source
开始取 num
个字节,并将它们复制到以地址 destination
开始的内存中。
指针是一个固定长度的内存地址,与类型无关。不管指针是 char *
(指向字符数据)、int *
(指向整数数据)还是 void *
(指向未知类型的数据),它仍然只是指向内存。
由于 memcpy
复制的是一个明确数量的字节,所以被指向的数据类型是无关紧要的;它只需要内存地址即可。
指针的类型并不重要,重要的是将两个内存地址进行复制的过程非常简单。
memcpy
被定义为接受void指针,你为什么认为它不起作用呢? - kaylum