我有一个传递一个结构的函数,而不是对arr本身进行位操作,我想创建副本。如何复制无符号整数数组的元素以进行位操作?
unsigned int * arr = cs->arr; // cs->arr is set as unsigned int * arr;
unsigned int copy;
memcpy(copy,arr[0], sizeof(unsigned int)); // Copy into copy the first element, for now
int i = 0;
while(copy != 0)
{
i += copy & 1;
copy >>= 1;
}
return i;
谢谢!
答案 0 :(得分:1)
你不需要memcopy
。一个简单的数组访问就足够了:
unsigned int copy = cs->arr[0];
int i = 0;
while(copy != 0)
{
i += copy & 1;
copy >>= 1;
}
return i;
答案 1 :(得分:0)
copy = arr[0];
就是所需要的。 copy
与arr[0]
具有相同的值,但不会以任何其他方式与其关联。 (即修改copy
不会更改arr[0]
。)