【发布时间】:2022-11-19 22:40:40
【问题描述】:
我试图使用我自己的 swapp 函数在我的数组中交换值。交换函数接受指针,我通过引用传递我的 x 和 y 以及指向我的数组的指针。最后交换值。
在下面的数组中,我正在交换索引 0 和 1,但输出不起作用。
#include <iostream>
using namespace std;
void swapp(int arr[], int *x, int *y) {
int temp = arr[*x];
*x = arr[*y];
*y = temp;
}
int main() {
int w[] = { 1,2,3,4 };
swapp(w, &w[0], &w[2]);
for (int i = 0; i < 4; i++) {
cout << w[i] << endl;
}
}
将索引 0 与索引 1 交换并期望输出 2、1、3、4,但我得到了 3、2、3 4。
【问题讨论】:
-
提示:您应该采用指向元素的指针或者数组和索引。不是都。你在交换吗元素或者你在交换指标?
-
您将
x和y视为元素和索引。他们不能两者兼而有之,决定一个 -
std::swap怎么了? -
如果您提供指向要交换的元素的指针,那么为什么还要向该函数提供
int arr[]?如果您想为要交换的元素提供索引,那么为什么要提供指针呢?
标签: c++