开发者

Copying a pointer for bit operations

I have a function that passes in a struct that and instead of doing bit manipulations on the arr itself I want to create copy. How can I make a copy of an element of an array of unsigned ints to do bit manipulations on?

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 fir开发者_Go百科st element, for now
int i = 0;
while(copy != 0)
{       
    i += copy & 1;
    copy >>= 1;
}
return i;

Thank you!


You dont need memcopy. A simple array access is enough:

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


copy = arr[0];

is all that's needed. copy will have the same value as arr[0], but it won't be linked to it in any other way. (i.e. modifying copy will not change arr[0].)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜