我有一个函数,它接受一个指向数组的指针(所以是一个 int**
)。在此函数中,我想调用 swap(int*, int*)
来交换数组中两个元素的位置。在 C 中交换这两个元素的语法是什么?
这是我正在寻找的示例:
int* do_something(int** arr) {
// assume i and j are valid locations in the array
swap(&arr[i], &arr[j]); // what should this line be?
}
// this function works fine, no changes needed
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
最佳答案
我不清楚 arr
是什么。是int*
数组,还是指向int
数组的指针?
选项1:arr
是int*
的数组:
您的交换函数交换 int
变量,但您需要交换 int*
变量。因此,您需要在交换函数中使用额外的间接级别。
void swap(int** a, int** b)
{
int* temp = *a;
*a = *b;
*b = temp;
}
选项2:arr
是指向int
数组的指针:
在这种情况下,您希望交换两个 int
值,问题中出现的 swap
的变体就是这样做的。问题是您错误地定义了 do_something
。它应该接收一个 int*
并像这样实现:
void do_something(int* arr, int i, int j)
{
swap(&arr[i], &arr[j]);
}
关于c - 将两个指针交换为指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26367886/