综合技术
直播中

李子跃

7年用户 200经验值
私信 关注
[问答]

为什么调用C的函数参数传递的往往是传值?

#include
void swap(int m,int n)
{
     int temp;
     temp = m;
     m = n;
     n = temp;
}
main()
{
    int x,y;
    x = 5;
    y = 10;
    swap(x,y);
    printf("%d,%dn",x,y);
}
用这个swap函数,并不能将x,y的值对换,因为函数是值传递,请大家帮忙怎么理解这个程序,打不开思路了。

回帖(5)

王博

2019-11-8 07:25:54
值传递是将实参的值复制给形参,实参形参不是存在同一内存,所以改变不了。
你这里要地址传递(引用传递)才能实现交换xy的值。
void swap(int *m,int *n)
{
     int temp;
     temp = *m;
     *m = *n;
     *n = temp;
}
main()
{
    int x,y;
    x = 5;
    y = 10;
    swap(&x,&y);
    printf("%d,%dn",x,y);
}
这样就能实现
举报

沈艳丽

2019-11-8 07:40:03
你该传的是地址    重写调换函数,传入参数设为指针,学C语言最初的几个课程就该教了这些吧
举报

徐远瑶

2019-11-8 07:45:47
对,在弄指针,就是感觉不传他的地址过去,根本没把值传过去
举报

王淑珍

2019-11-8 07:52:51
是的,是这样的,在看指针,书上面的例子,就是不明白,一定要传这两个数的地址才能实现交换
举报

更多回帖

发帖
×
20
完善资料,
赚取积分