gpt4 book ai didi

c++ - 使用引用在函数中传递参数有什么问题

转载 作者:太空宇宙 更新时间:2023-11-04 16:13:55 27 4
gpt4 key购买 nike

我正在尝试实现插入排序。当我在 while 循环中编写 swap 方法时,该算法工作正常。但是当我尝试调用 swap() 函数时,它给出了错误的答案。具体来说,当我传递参数“j”时,它会使答案出错。你能告诉我我在哪里犯了错误吗?(在 ideone 上![ http://ideone.com/MoqHgn] )

#include <iostream>
using namespace std;

void swap(int *x, int *y, int *j) {
int temp = *x;
*x = *y;
*y = temp;
*j--;
}

int main() {
int N;
scanf("%d", &N);
int a[N];
for(int i = 0; i < N; i++) {
scanf("%d", &a[i]);
}
for(int i = 1; i < N; i++) {
int j = i;
while(j > 0 && a[j-1] > a[j]) {
swap(&a[j-1], &a[j], &j);
//int temp = a[j];
//a[j] = a[j-1];
//a[j-1] = temp;
//j--;
}
}

for(int i = 0; i<N; i++) {
cout << a[i] << " ";
}

return 0;
}

最佳答案

*j--*(j--) 相同,但你需要 (*j)--

既然您是用 C++ 编写代码,为什么不通过引用传递而不是使用指针呢?

关于c++ - 使用引用在函数中传递参数有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25014139/

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