我们可以使用memcpy以非常干净的方式将整个3d数组内容复制到另一个3d数组中。我想知道是否有更简洁的方法将3d数组的少量内容复制到另一个中。
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]);
}
答案 0 :(得分:5)
memcpy( &array2[0][1][1],
&array1[0][1][1],
sizeof(array1[0][1][1]) ) ;
与直接元素分配相同:
array2[0][1][1] = array1[0][1][1] ;
使用memcpy()
进行单个元素分配有点过于复杂,可能效率较低。例如,如果复制整个子数组,例如:
memcpy( &array2[0][1],
&array1[0][1],
sizeof(array2[0][1]) ) ;
请注意,对于memcpy()
的第三个参数,使用目标的大小而不是源更安全 - 以防目的地是小。