假设我有一个32字节长的void *数组,我想将数据从字节8移到字节16。 是否有可能以某种方式“删除”这些字节?
答案 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归零。