yueguangjiancha
2021-09-08 13:19
采纳率: 80%
浏览 30

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


#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; 
}
  • 收藏

3条回答 默认 最新

  • Pliosauroidea 2021-09-08 13:29
    已采纳

    有帮助望采纳

    
    #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;
    }
    
    已采纳该答案
    1 打赏 评论
  • 快乐鹦鹉 2021-09-08 13:45

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

    2 打赏 评论
  • God____Boy 2021-09-08 13:25

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

    #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;
    }
    
    1 打赏 评论

相关推荐 更多相似问题