为什么我这个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?不是应该互换吗?
求解答 展开
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?不是应该互换吗?
求解答 展开
3个回答
展开全部
你传的参数是值,在函数里交换完后,会释放空间,而且你并没有接收函数传出的数据。
# 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;
}
# 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;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C语言给函数传递参数的时候,实际上传递的是参数的副本(数组除外),所以在函数内对参数的修改对原参数没有影响。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f函数不能修改你主函数中定义的变量a和b的值。函数需要传址参数才可以。就是说你必须将f函数的两个参数定义为指针类型。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询