在C中剪切void*数组的一部分

在C中剪切void*数组的一部分,c,arrays,slice,C,Arrays,Slice,假设我有一个32字节长的void*数组,我想将数据从字节8删除到字节16。 有可能以某种方式“剪切”这些字节吗?你可以转换成char*并将索引7-15置零。你可以转换成char*并将索引7-15置零。因为C中的数组是一个连续的内存区域,你不能在不复制的情况下“剪切”它的部分 以下是如何使用: 由于C中的数组是一个连续的内存区域,因此不制作副本就不能“剪切”它的部分 以下是如何使用: 你是说拷贝17到31字节,转发8字节?当然结尾应该是什么?“剪切”是指将数组的结尾移向数组的开头?这与您的另一个问

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

你可以转换成
char*
并将索引7-15置零。

你可以转换成
char*
并将索引7-15置零。

因为C中的数组是一个连续的内存区域,你不能在不复制的情况下“剪切”它的部分

以下是如何使用:


由于C中的数组是一个连续的内存区域,因此不制作副本就不能“剪切”它的部分

以下是如何使用:


你是说拷贝17到31字节,转发8字节?当然结尾应该是什么?“剪切”是指将数组的结尾移向数组的开头?这与您的另一个问题有什么不同?我想尝试删除某些标记。在这里,我试图一个字节一个字节地直接操作数据(通过复制它)。你的意思是复制字节17..31向前8字节?当然结尾应该是什么?“剪切”是指将数组的结尾移向数组的开头?这与您的另一个问题有什么不同?我想尝试删除某些标记。在这里,我试图一个字节一个字节地直接操作数据(通过复制数据)。你能给我一个小的代码示例吗?复制一份就可以了。你能给我一个小的代码示例吗?
char copy[16];
char *ptr = voidPtr;
memcpy(copy, ptr, 8);      // Copy bytes 0..7
memcpy(copy+8, ptr+16, 8); // Copy bytes 16..31