我们可以使用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]);
}
Run Code Online (Sandbox Code Playgroud)
memcpy( &array2[0][1][1],
&array1[0][1][1],
sizeof(array1[0][1][1]) ) ;
Run Code Online (Sandbox Code Playgroud)
实现与直接元素分配相同:
array2[0][1][1] = array1[0][1][1] ;
Run Code Online (Sandbox Code Playgroud)
要使用memcpy()单元素赋值是有点过度复杂,可能效率较低.例如,如果您正在复制整个子数组,则更有意义,例如:
memcpy( &array2[0][1],
&array1[0][1],
sizeof(array2[0][1]) ) ;
Run Code Online (Sandbox Code Playgroud)
请注意,使用目标的大小而不是第三个参数的源更安全memcpy()- 只是在目标较小的情况下.
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |