为什么我这个C语言程序运行完结果还是a=3,b=5?不是应该互换吗?求解答

#include<stdio.h>intf(inti,intj){intp;if(i<j){p=i;i=j;j=p;returni,j;}}intmain(void){i... # include <stdio.h>
int f(int i, int j)
{
int p;
if (i < j)
{
p = i;
i = j;
j = p;
return i, j;
}
}
int main(void)
{
int a, b;
a = 3;
b = 5;

f(a, b);
printf("a = %d\nb = %d\n", a, b);

return 0;
}

为什么我这个C语言程序运行完结果还是a=3,b=5?不是应该互换吗?
求解答
展开
 我来答
陌路卖酱油
推荐于2016-10-08 · TA获得超过103个赞
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:117万
展开全部
你传的参数是值,在函数里交换完后,会释放空间,而且你并没有接收函数传出的数据。
# include <stdio.h>
void f(int* i, int* j)
{
int p;
if (*i < *j)
{
p = *i;
*i = *j;
*j = p;
return;
}
}
int main(void)
{
int a, b;
a = 3;
b = 5;

f(&a,&b);
printf("a = %d\nb = %d\n", a, b);

return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
piestkj
2015-07-25 · TA获得超过928个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:613万
展开全部
C语言给函数传递参数的时候,实际上传递的是参数的副本(数组除外),所以在函数内对参数的修改对原参数没有影响。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wooden954
2015-07-25 · TA获得超过1万个赞
知道大有可为答主
回答量:6135
采纳率:93%
帮助的人:827万
展开全部
f函数不能修改你主函数中定义的变量a和b的值。函数需要传址参数才可以。就是说你必须将f函数的两个参数定义为指针类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式