这函数里的memcpy是否多此一举
这函数里的memcpy是不是多此一举?
书上很多函数都用到了下面这种方法,我不知道使用memcpy赋值是出于什么原因,感觉多此一举.
比如这个函数
为什么不直接这样写:
------解决方案--------------------
不行,bit_get(bits, mapping[i] - 1));这里面一在使用bits,然后又赋值给bits,这样应该不行
书上很多函数都用到了下面这种方法,我不知道使用memcpy赋值是出于什么原因,感觉多此一举.
比如这个函数
static void permute(unsigned char *bits, const int *mapping, int n)
{
unsigned char temp[8];
int i;
memset(temp, 0, (int)ceil(n / 8));
for (i = 0; i < n; i++)
bit_set(temp, i, bit_get(bits, mapping[i] - 1));
memcpy(bits, temp, (int)ceil(n / 8));
return;
}
为什么不直接这样写:
static void permute(unsigned char *bits, const int *mapping, int n)
{
int i;
for (i = 0; i < n; i++)
bit_set(bits, i, bit_get(bits, mapping[i] - 1));
return;
}
------解决方案--------------------
不行,bit_get(bits, mapping[i] - 1));这里面一在使用bits,然后又赋值给bits,这样应该不行