void 函数调用问题

来源:百度知道 编辑:UC知道 时间:2024/09/24 21:29:25
void swap(int x,int y)
{int t;
t=x;x=y;y=t;}
main()
{int a=5,b=3;
swap(a,b);
printf("%d%d",a,b);
}
输出结果: 5,3

问题: 由输出结果,swap 函数在main 函数里并没有功能, 为什么此处要调用 swap 这个函数呢? 有点不明白? 哪个高人可以指教一下, 非常感谢!
我想知道的是在MAIN 函数中的“sawp(a,b)” 调用是不是起不到任何作用? 如果不起作用, 为什么还要在此处调用呢?

他只是转到swap里赋值给局部变量x, y, t,然后调换一下
对你a,b变量没有影响,就这么简单

void swap(int x,int y)
{
int t;
t=x;x=y;y=t;
}
main()
{
int a=5,b=3;
swap(a,b);
printf("%d%d",a,b);
}
调用 swap 这个函数,这应该是告诉你,函数的实参到形参只是单单项的值传递
也就是说用这种方法交换主函数的变量的值是不可能的。
如果想要通过这种方式来交换主函数中的两个变量的值 ,要用指针来进行实参的传递,函数应该如下书写:
void swap(int *x,int *y)
{
int t;
t = *x;
*x = *y;
y* = t;
}
main()
{
int a=5,b=3;
swap(&a,&b);
printf("%d%d",a,b);
}
这样程序运行的结果就是3,5(即交换了a,b的值)

这个问题非常典型,你用的是引用变量,交换的只是他们的地址,而地址里面的值是没有改变的