gpt4 book ai didi

c++ - 简单的 C++ 交换函数

转载 作者:太空狗 更新时间:2023-10-29 20:24:20 25 4
gpt4 key购买 nike

为什么如果我有这样的函数,交换两个数字,它不起作用[swap],(我知道我可以通过在原型(prototype)中声明指针,然后传递main() 中的各个变量),但适用于数组,无需传递指针和地址。

没用

void num_exchange(int m, int n);

int main(){

int num1 = 5;
int num2 = 6;

num_exchange(num1 , num2 );

cout << "num1 =" << num1 << endl;
cout << "num2 =" << num2 << endl;

return 0;
}

void num_exchange(int m, int n){
int temp;
temp = m;
m = n;
n = temp;
}

作品

void arr_exchange(int [], int);

int main(){


int n[7] = { 0, 0, 0, 0, 0, 0, 0 };

arr_exchange(n, 7);
for (int i = 0; i < 7; i++)
cout << n[i] << " ";

return 0;
}

void arr_exchange(int x[], int){
for (int i = 0; i < 7; i++)
x[i] = 1;
}

最佳答案

void num_exchange(int m, int n){
int temp;
temp = m;
m = n;
n = temp;
}

修改输入整数的拷贝。要使您的代码正常工作,请使用

void num_exchange(int& m, int& n){
int temp;
temp = m;
m = n;
n = temp;
}

相反(注意第一行中的 &)。这称为通过引用传递。通常,使用 std::swap 来交换东西。

void arr_exchange(int x[], int){
for (int i = 0; i < 7; i++)
x[i] = 1;
}

因为在 C++ 中有效

void arr_exchange(int x[], int){

相当于

void arr_exchange(int* x, int){

所以这里传递了一个指针,从而修改了原始数据。

关于c++ - 简单的 C++ 交换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388536/

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