我有一个像这样的交换功能:
void swap(int i, int j, void* arr[])
{
void *temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
我在 main 中调用 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。为什么要这样做?