交换任意两个整数的值,观察并分析结果。思考为什么不能交换两个整数的值?修改为正确的程序

img


输入形式:
Please input the first integer:3
Please input the second integer:4
输出形式:
a=3,b=4
a=4,b=3

这是因为你传给swap的参数只是一个数,这是传值调用,并不能影响实参,只是实参的一份零时拷贝
可以修改为传址调用:

#include <stdio.h>
void swap2(int* a, int* b)
{
    int tmp = *a;//定义一个临时变量,备份a的值
    *a = *b;//将b的值赋给a
    *b = tmp;//将备份的a的值赋给b,完成交换
}
int main()
{
    int a = 2, b = 3;
    printf("交换前:a=%d,b=%d\n",a,b);
    swap2(&a, &b);//调用自己创建的交换函数
    printf("交换后:a=%d,b=%d\n",a,b);
    return 0;
}

我的博客有详解,可以参考一下,希望对你有帮助.
https://blog.csdn.net/qq_67276605/article/details/127676952