次のようなスワップ機能があります。
void swap(int i, int j, void* arr[])
{
void *temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
次のようにメインで swap を呼び出します。
main()
{
int arr[8] = {4,7,9,2,6,7,8,1};
void *ptr = arr;
swap(0, 1, ptr);
int k;
for (k=0; k<8; k++)
printf("%d ", arr[k]);
}
現在、スワップは正常に機能しているように見えますが、1 つの値を別の値と交換する代わりに、2 つの値を別の 2 つの値と交換しています。たとえば、swap(0, 1, ptr) を実行すると、配列が取得されます
9,2,4,7,6,7,8,1
私が得るべきとき:
7,4,9,2,6,7,8,1
4 と 7 を交換する代わりに、4,7 を 9,2 と交換しています。なぜこれを行うのですか?