繁体   English   中英

C:无符号字符数组*将元素复制到其他无符号字符数组

[英]C: unsigned char * bytes array copying elements to other unsigned char * array

我认为复制数组元素是这样的:

unsigned char *new_bytes_array = malloc(sizeof(unsigned char)*length/2); 
for(int i=0, j=0; i<length; i++) {
  if(i % 2 == 0) continue; 
  new_bytes_array[j] = old_bytes_array[i]; 
  j++;

}

正在复制,但不是通过引用赋值,但是我想确保这将是深度复制,而不仅仅是引用或指针的浅表复制。

我知道这可能是简单而荒谬的问题,但是我找不到类似的栈,而是memcpy()所有数组,但是我只想复制一些元素,例如每隔一个元素复制一次,或者复制1-3个元素并跳过第4个元素, (如果i%4 == 0跳过元素)。

new_bytes_array[j]计算结果为unsigned char

假设old_bytes_array[i]也一样,那么这个

new_bytes_array[j] = old_bytes_array[i];

复制unsigned char而不是指针,而不是unsigned char*

是的,您显示的分配分配了一个unsigned char ,即在大多数典型计算机上为“字节”,它不复制指针而是原始数据。

这是完成您需要的功能的完整功能,并解决了一些小问题:

void * copy_every_second_byte(const void *src, size_t length)
{
  if(src == NULL || length == 0)
    return NULL;
  unsigned char *out = malloc(length / 2);
  for(size_t i = 0, j = 0; i < length; ++i)
  {
    if(i % 2 == 0) continue;
    out[j++] = ((unsigned char *) src)[i];
  }
  return out;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM