当前位置:   article > 正文

利用函数与指针实现两个数据的交换_用指针编写函数交换两个变量的值

用指针编写函数交换两个变量的值

注意进行交换的时候不能直接使用变量进行交换。例如使用a,b进行交换。再主函数中的a,b与viod函数中的a,b不是一个数,它们的地址是不同的交换交换之后等于使用了a,b的地址。

  1. void Swap_err1(int a, int b)//error,交换这里的a,b不影响主函数中的a,b。
  2. {
  3.     int tmp = a;
  4.     a = b;
  5.     b = tmp;
  6. }
  7. void Swap_err2(int* p1, int* p2)//error,没有解引用,只是将p1和p2的地址进行了交换。
  8. {
  9.     int* tmp;
  10.     tmp = p1;
  11.     p1 = p2;
  12.     p2 = tmp;
  13. }
  14. //野指针,定义的时候,没有进行初始化。所以tmp是一个随机数,我们没有权限去使用这个tmp的地址。
  15. void Swap_err3(int* p1, int* p2)
  16. {
  17.     int* tmp;
  18.     *tmp = *p1;//崩溃,使用了野指针,系统没有权限去使用,所以代码执行过程中崩溃
  19.     *p1 = *p2;
  20.     *p2 = *tmp;
  21. }

正确的做法。

  1. void Swap(int* p1, int* p2)//正确的使用,定义了两个指针,因为数据的地址是固定不变的,我们使用指针就能完美解决这个问题,通过地址去进行交换,避免了数据
  2. {
  3.     int tmp = *p1;
  4.     *p1 = *p2;
  5.     *p2 =tmp;
  6. }
  7. int main()
  8. {
  9.     int a = 10;
  10.     int b = 20;
  11.     Swap(&a,&b);再这里对a,b的地址进行使用,不能直接使用a,b的数值。
  12.     printf("%d %d", a, b);
  13.     return 0;
  14. }

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

闽ICP备14008679号