Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C:无符号字符*字节数组将元素复制到其他无符号字符*数组_C_Arrays_Unsigned Char - Fatal编程技术网

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

C:无符号字符*字节数组将元素复制到其他无符号字符*数组,c,arrays,unsigned-char,C,Arrays,Unsigned Char,我认为像这样复制数组的元素: 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++; unsigned char*新字节数组=malloc(sizeof(unsigned

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

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++;
unsigned char*新字节数组=malloc(sizeof(unsigned char)*长度/2);

for(int i=0,j=0;i
新字节数组[j]
计算为
无符号字符

假设
old\u bytes\u array[i]
也这样做,那么

new_bytes_array[j] = old_bytes_array[i];

复制一个
无符号字符
,而不是指针,也不是
无符号字符*

是的,您显示的赋值只分配一个
无符号字符
,即“一个字节”。在大多数典型的计算机上,它不复制指针,而是复制原始数据

下面是一个完整的函数,它可以满足您的需要,并修复了一些小问题:

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;
}
void*每秒钟复制一个字节(const void*src,size\t length)
{
if(src==NULL | | length==0)
返回NULL;
无符号字符*out=malloc(长度/2);
对于(尺寸i=0,j=0;i<代码>你的代码做了一个“深度拷贝”。注意<代码> siZeof(unChar char)< /C>总是1,所以这只是一个恼人的方式写<代码> 1 <代码>(WHECH在乘法的情况下是相当没有意义的)。考虑删除它。@在不同的平台上解开,<代码> siZeof(unChar char)。
并不总是1。所以我认为删除它不是一个好主意。@litao3不。你错了,那根本不是真的。
sizeof
的返回值是
char
的单位,所以根据定义
sizeof(char)
是1。@unwind yes,sizeof(char)在不同的体系结构上并不总是1。而且
sizeof
是在编译时执行的,所以我认为
sizeof(unsigned char)
比幻数
1
要好。