当前位置:   article > 正文

C编程,通过指针来交换a,b值—易错点_c语言指针交换变量a和b的值

c语言指针交换变量a和b的值

这篇文章记录一个易错点

如果要通过函数来实现a,b值的交换,我们应该都知道下面这个例子应该是实现不了的:

  1. //以传值的方式来调用函数
  2. void swap(int a,int b)
  3. {
  4. int temp;
  5. temp = a;
  6. a = b;
  7. b = temp;
  8. }

因为参数传递采用的是传值方式,上面的函数不会影响到调用它的例程中的a和b的值。

我知晓上面这个知识点,所以我采用的是指针,传递地址的方式来调用函数,但是没想到我还是错了,我使用了下面这个函数,大家不妨来看看:

  1. //拟定采用的指针传递地址的方式
  2. void swap(int *a,int *p)
  3. {
  4. int *temp;
  5. temp = a;
  6. a = b;
  7. b = temp;
  8. }

猛地一看,认为这个方式应该也能够实现a,b交换的功能,其实这个函数和上面那个没有实质区别,最后还是实现不了。

正确的函数应当是这样的:

  1. //正确的指针使用方式
  2. void swap(int *a,int *b)
  3. {
  4. int temp;
  5. temp = *a;
  6. *a = *b;
  7. *b = temp;
  8. }

为了验证我说的是正确的,我做了这个测试:

补充:

因为最近在学习C++,所以用C++也写了一个交换的函数,这里采用传引用的方式,同样能够达到效果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/算法创新者/article/detail/63050?site
推荐阅读
相关标签
  

闽ICP备14008679号