C语言问题求解,如图,为什么这里编译过不了呢?
1个回答
展开全部
声明函数要写原型,所以void swap1(int,int);错,应该写void swap1(int *,int *);才对。
void swap2(int,int);的声明也错,原因同1。
函数swap1交换的是局部指针,并不影响主调函数中x和y的值。要达到交换x、y的值应该写:int t=*a;*a=*b;*b=t;才对。
看来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变量。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询