赞
踩
这篇文章记录一个易错点
如果要通过函数来实现a,b值的交换,我们应该都知道下面这个例子应该是实现不了的:
- //以传值的方式来调用函数
- void swap(int a,int b)
- {
- int temp;
- temp = a;
- a = b;
- b = temp;
- }
因为参数传递采用的是传值方式,上面的函数不会影响到调用它的例程中的a和b的值。
我知晓上面这个知识点,所以我采用的是指针,传递地址的方式来调用函数,但是没想到我还是错了,我使用了下面这个函数,大家不妨来看看:
- //拟定采用的指针传递地址的方式
- void swap(int *a,int *p)
- {
- int *temp;
- temp = a;
- a = b;
- b = temp;
- }
猛地一看,认为这个方式应该也能够实现a,b交换的功能,其实这个函数和上面那个没有实质区别,最后还是实现不了。
正确的函数应当是这样的:
- //正确的指针使用方式
- void swap(int *a,int *b)
- {
- int temp;
- temp = *a;
- *a = *b;
- *b = temp;
- }
为了验证我说的是正确的,我做了这个测试:
补充:
因为最近在学习C++,所以用C++也写了一个交换的函数,这里采用传引用的方式,同样能够达到效果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。