函数返回的问题

zqg1177 2007-08-16 08:32:41
main()
{ int a=10,b=20;
printf("a=%d,b=%d\n",a,b);
swap(a,b);
printf("a=%d,b=%d\n",a,b);
}
swap(x,y)
int x,y;
{ int temp;
temp=x;
x=y;
y=temp;


}
为什么a,b没有能返回?谢谢大家
...全文
76 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zqg1177 2007-08-16
  • 打赏
  • 举报
回复
明白了,谢谢大家,我是在看指针的时候发现这个情况的,现在明白了,谢谢!
星羽 2007-08-16
  • 打赏
  • 举报
回复
传指针 或者 引用吧
yydrewdrew 2007-08-16
  • 打赏
  • 举报
回复
函数调用会发生从实参到形参的复制
很土 2007-08-16
  • 打赏
  • 举报
回复
参数是传值,而不是传址!
void swap(int* x, int* y)
{
int intTemp;

intTemp = *x;
*x = *y;
*y = intTemp;
}

调用时:
swap(&a, &b);
freshui 2007-08-16
  • 打赏
  • 举报
回复
这就是传值和传址的问题

你用传值的方法来调用函数, 实际传过去的是a 和 b两个变量的拷贝, 拷贝的交换不会影响到a和b是否交换, 他们还是原来的东西
要交换a b, 要用传址的方法
我啃 2007-08-16
  • 打赏
  • 举报
回复
你是传值,创建了一个副本,不修改原来的数值
改成:
void swap(int &x,int &y)

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧