在C中删除void *数组的一部分

时间:2013-07-23 17:48:38

标签: c arrays slice

假设我有一个32字节长的void *数组,我想将数据从字节8移到字节16。 是否有可能以某种方式“删除”这些字节?

2 个答案:

答案 0 :(得分:3)

由于C中的数组是连续的内存区域,因此无需复制即可“剪切”其部分。

以下是使用memcpy

的方法
char copy[16];
char *ptr = voidPtr;
memcpy(copy, ptr, 8);      // Copy bytes 0..7
memcpy(copy+8, ptr+16, 8); // Copy bytes 16..31

答案 1 :(得分:0)

您只需转换为char *并将索引7-15归零。