请分析下列程序错误原因并写出正确程序

[复制链接]
查看11 | 回复1 | 2008-9-4 22:57:39 | 显示全部楼层 |阅读模式
void change(int x,int y)
{int temp;
temp=x;
x=y;
y=temp;
}
main()
{int a,b;
a=3;
b=4;
change(a,b);
printf("\n%d,%d\n",a,b);
}
为什么a,b的值没有交换呢? 哪里错了。详细点.

回复

使用道具 举报

千问 | 2008-9-4 22:57:39 | 显示全部楼层
原因很简单,你的函数的参数没有使用传址调用,函数内部的交换并没有返回,只是堆栈中的COPY交换,并且退出函数时候被直接删除了。改为change(int *x,int *y)...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行