gpt4 book ai didi

c - 将两个指针交换为指针

转载 作者:行者123 更新时间:2023-12-01 12:39:28 27 4
gpt4 key购买 nike

我有一个函数,它接受一个指向数组的指针(所以是一个 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:arrint*的数组:

您的交换函数交换 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com