내가 생각 이런 배열의 요소 복사 :는 C : 부호 숯불 * 다른 서명 숯불 바이트 어레이 복사 소자 * 어레이
unsigned char *new_bytes_array = malloc(sizeof(unsigned char)*length/2);
for(int i=0, j=0; i<length; i++) {
if(i % 2 == 0) continue;
new_bytes_array[j] = old_bytes_array[i];
j++;
}
하지 참고로 복사 할 수 있지만 값을 만들고, 그러나 나는 이것을 참조 사본이나 포인터의 얕은 사본이 아닌 완전한 사본이되게 할 것이다.나는 이것이 쉽고 어리석은 qustion이지만, memcpy()의 모든 배열과 비슷한 스택을 찾을 수는 없다는 것을 알고 있지만, 예를 들어 모든 두 번째 요소 만 복사하거나 1-3 개의 요소를 복사하려고합니다. 네 번째 요소를 건너 뜁니다 (i % 4 == 0이면 요소 무시).
귀하의 코드는 다음과 같이 "깊은 복사"를합니다. –
'sizeof (unsigned char)'는 항상 1이므로 '1'을 쓰는 것은 성가신 방법입니다 (곱셈의 경우 wihch는 무의미합니다). 제거를 고려하십시오. – unwind
@unwind는 실제로 다른 플랫폼에 있고,'sizeof (unsigned char)'는 항상 1이 아닙니다. 그래서 그것을 제거하는 것은 좋지 않다고 생각합니다. – litao3rd