我有两个数组说:int array1 [6] = {2,4,5,7,9}; & INT数组2 [6] = {0,5,6,7,3}在不使用临时变量的情况下在C中交换两个不同数组的元素
我将通过这些给函数交换(数组1,数组2)
目前我试图做如下
index =0;
while(array1[index] && array2[index] != NULL)
{
array1[index] = array1[index]^array2[index];
array2[index] = array1[index]^array2[index];
array1[index] = array1[index]^array2[index];
index++;
}
我的方法正确吗?请让我知道你的意见
PS:我不能发送数组长度作为参数的函数。我想用C语言来做到这一点。
感谢
为什么AREN”你使用临时变量吗?老实说,我敢肯定,编译器可以优化'int array3 [6]; memcpy(array3,array1,sizeof array1); memcpy(array1,array2,sizeof array1); memcpy(array2,array3,sizeof array1);'比你的代码更快。以您找到最清晰的方式编写,然后优化,如果您发现它是性能问题。 –
谢谢克里斯。使用临时会解决。但有什么办法,我们可以做到这一点,而不需要使用温度和不必传递数组长度? – Kelly
使用指针可能会更方便,只需交换指针,而不是复制两个数组的全部内容。 –