memcpy vs指针交换?

时间:2013-10-16 23:00:02

标签: c arrays pointers gcc

交换两个数组内容的不同两种方式有什么区别吗? (时间消耗除外)

memcpy(cells,tmp_cells,sizeof(t_speed)*params.ny*params.nx);


t_speed* temp_ptr = *cells_add;
*cells_add = *tmp_cells_add;
*tmp_cells_add = temp_ptr;

其中

t_speed* cells = *cells_add; 
t_speed* tmp_cells = *tmp_cells_add;

指针交换是否存在任何潜在威胁?

编辑:我唯一想做的就是用tmp_cells覆盖单元格:)

谢谢!

1 个答案:

答案 0 :(得分:3)

是的,不同之处在于,如果除了您正在交换的数组之外还有对此数组的任何其他引用,它们将指向不同的数据(在memcpy情况下)或相同的数据(在指针交换的情况下)。你想做什么取决于你想要的行为。

请注意,您的memcpy案件会覆盖cells;没有交换。