我有兩個數組說: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
使用指針可能會更方便,只需交換指針,而不是複製兩個數組的全部內容。 –