C 为位操作复制指针

C 为位操作复制指针,c,pointers,c99,C,Pointers,C99,我有一个函数,它传入一个结构,而不是对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 in

我有一个函数,它传入一个结构,而不是对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;
谢谢大家!

copy = arr[0];

这就是所需要的
copy
将具有与
arr[0]
相同的值,但不会以任何其他方式链接到它。(即修改
copy
不会改变
arr[0]

您不需要
memcopy
。一个简单的阵列访问就足够了:

unsigned int copy = cs->arr[0];
int i = 0;
while(copy != 0)
{        
    i += copy & 1;
    copy >>= 1;
}
return i;

你已经在“复制”中复制了它,那么怎么了?你在找更好的方法吗?复制=arr[0];问题是“如何扩展我发布的代码以处理
arr
的所有元素,而不仅仅是第一个元素”?