C语言问题求解,如图,为什么这里编译过不了呢?

 我来答
White_MouseYBZ
2016-12-07 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6601万
展开全部
  1. 声明函数要写原型,所以void swap1(int,int);错,应该写void swap1(int *,int *);才对。

  2. void swap2(int,int);的声明也错,原因同1。

  3. 函数swap1交换的是局部指针,并不影响主调函数中x和y的值。要达到交换x、y的值应该写:int t=*a;*a=*b;*b=t;才对。

  4.  看来swap2是有意这样写的:只改变x而不改变y。

更多追问追答
追问
swap2为什么只变X没变Y呢?a=&x所以*a应该为x啊,下面三行应该是X与Y的交换啊
追答
a=&x所以*a应该为x啊——不错啊,所以改变了x啊,给x赋了b的值(就是y的值);而b=t只是将局部变量b的值改变为*a(即x)的值,b原来的值是y的值,而b并不是y,所以y的值没有变;因为没有传来y的地址,无法操作到y变量。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式