1
매우 깨끗한 방법으로 memcpy를 사용하여 전체 3d 배열 내용을 다른 3d 배열로 복사 할 수 있습니다. 3d 배열의 내용을 거의 복사하지 않는 깨끗한 방법이 있는지 알고 싶었습니다.3 차원 배열의 memcpy
void function()
{
uint32_t array1[2][2][2];
uint32_t array2[2][2][2];
//memset both the arrays to 0 first;
memset(&array1,0,sizeof(array1));
memset(&array2,0,sizeof(array2));
array1[0][1][1]= 4;
array1[0][0][0]=6;
//memcpy(&array2,&array1,sizeof(array1));
memcpy(&array2[0][1][1],&array1[0][1][1],sizeof(array1[0][1][1])); //this works, but if there is a cleaner way?
printf_all("value of array1 %d and array2 %d \n",array1[0][1][1],array2[0][1][1]);
}
이것은 실제로 작동해야합니다 : memcpy (array2, array1, sizeof (array1)); 그리고 깨끗하고 컴팩트합니다. –
Btw, memset 대신에 "= {0}"을 0으로 사용하고 싶을 수도 있습니다. –
단일 요소의 경우 간단한 할당은 나중에 누군가가 코드를 읽을 때 쉽게 이해할 수 있습니다. 마지막 인덱스를 두 번 이상 증분하는 블록을 복사하는 것은 배열이 메모리에서 어떻게 배치되는지를 알아야하기 때문에 위험합니다. –