2011-04-30 2 views
-3

구조체를 전달하는 함수가 있고 arr 자체에서 비트 조작을하는 대신 복사본을 만들고 싶습니다. 비트 조작을 수행 할 부호없는 int 배열의 요소 복사본을 만들려면 어떻게해야합니까?비트 작업을위한 포인터 복사

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

이미 '복사'에 복사 했으므로 잘못된 것이 무엇입니까? 너 더 나은 방법을 찾고 있니? copy = arr [0]; – atoMerz

+0

"첫 번째 코드 대신에'arr'의 모든 요소에서 작동하도록 게시 한 코드를 어떻게 확장합니까? –

답변

1

memcopy이 필요하지 않습니다. 간단한 배열 액세스로 충분합니다 :

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

모두입니다. copyarr[0]과 동일한 값을 갖지만 다른 방식으로는 연결되지 않습니다. (즉, copy을 수정하면 arr[0]이 변경되지 않습니다.)