复制指针以进行位操作

时间:2011-04-30 07:23:55

标签: 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
int i = 0;
while(copy != 0)
{       
    i += copy & 1;
    copy >>= 1;
}
return i;

谢谢!

2 个答案:

答案 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];

就是所需要的。 copyarr[0]具有相同的值,但不会以任何其他方式与其关联。 (即修改copy不会更改arr[0]。)