这个代码为何交换不了两个整数的值?


#include<stdio.h>

void swap(int a,int b)
{
    int j,k,t;
    t = j;
    j = k;
    k = t;
}
int main()
{
    int a = 3;
    int b = 5;
    swap(a , b);
    printf("%d %d\n",a,b);
    
    return 0; 
}

有帮助望采纳


#include <stdio.h>

void swap(int *o, int *p)
{
    int temp;
    temp = *o;
    *o = *p;
    *p = temp;
}
int main()
{
    int a = 3, b = 5;
    swap(&a, &b);
    printf("%d %d\n", a, b);
    return 0;
}

函数是值参的话,没有办法在函数内部修改外部传入变量的值,因为函数参数传递时会自动产生一个函数内的同名临时变量的
要想通过函数改变传入参数的值,可以将参数类型改为引用或者指针

天哪,你在交换函数体里定义的数
代码如下

#include<stdio.h>
int a = 3;
int b = 5;
void swap(int o,int p) {
    b=o;
    a=p;
}
int main() {
    swap(a,b);
    printf("%d %d\n",a,b);
    return 0;
}