C语言题目 为什么是20?
发布网友
发布时间:2022-02-28 23:50
我来回答
共2个回答
热心网友
时间:2022-03-01 01:20
虽然你的main函数里执行了swap函数,但是也只是将x,y的值传给了swap里的参数,并没有影响到x,y本身的值,交换是在swap里进行的。所以x还是20
热心网友
时间:2022-03-01 02:38
(1)使用指针交换两个值时,一般是交换指针指向的对象的值,而不是指针本身的值。比如可以这么做:
int value;
value = *p1;
*p1 = *p2;
*p2 = value;
如上可以正确交换两个指针所指对象的值。那是否可以通过交换指针值,也就是你书中的代码那样,来达到交换的目的呢?想像一下,两个指针交换指向,这是一个很简单的需求,如果不允许真的是没有天理了,只不过要想真正实现,还得完全理解(2)的知识。
(2)函数调用时,涉及一个向堆栈传递参数的问题,书上一般把其表述为形参和实参。形参是实参的一个副本,位于堆栈上。函数如果修改了参数的值(如你书中修改指针的值),实际修改的只是形参的值,不会影响到实参。实参x和y的值没有任何改变,这就是20的由来。