当前位置:   article > 正文

C语言--swap交换函数_swap函数

swap函数

目录

 

1.swap1(int a,int b)【不变】

2.swap2(int *a,int *b)【不变】

3.swap3(int *a,int *b)【改变】

4.swap4(int &a,&b)【改变】


 

1.swap1(int a,int b)【不变】

  1. void swap1(int a, int b)
  2. {
  3. int t = a;
  4. a = b;
  5. b = t;
  6. }
  7. int main()
  8. {
  9. int a = 10;
  10. int b = 20;
  11. printf("交换前:a=%d b=%d\n", a, b);
  12. swap1(a, b);
  13. printf("交换后:a=%d b=%d\n", a, b);
  14. return 0;
  15. }

运行结果:

d0ac91dc89d14bfeae3011275f3da4ac.png

实参和形参不同内存单元 ,形参变了,实参没变,两者内存空间不同;

在不同的时间里,修改了不同的内存单元中的内容.

2.swap2(int *a,int *b)【不变】

  1. void swap2(int* a, int* b)
  2. {
  3. int* t = a;
  4. a = b;
  5. b = t;
  6. }
  7. int main()
  8. {
  9. int a = 10;
  10. int b = 20;
  11. printf("交换前:a=%d b=%d\n", a, b);
  12. swap2(&a, &b);
  13. printf("交换后:a=%d b=%d\n", a, b);
  14. return 0;
  15. }

运行结果:

8be0a0d560474c67bd74678da3e5c28d.png

只交换形参的指向,内存中的内容未改变;

在不同的时间里,修改了不同的内存单元.

3.swap3(int *a,int *b)【改变】

  1. void swap3(int* a, int* b)
  2. {
  3. int t = *a;
  4. *b = *a;
  5. *b = t;
  6. }
  7. int main()
  8. {
  9. int a = 10;
  10. int b = 20;
  11. printf("交换前:a=%d b=%d\n", a, b);
  12. swap3(&a, &b);
  13. printf("交换后:a=%d b=%d\n", a, b);
  14. return 0;
  15. }

运行结果:

b00467b8165744758f317ea4bd67b979.png

 改变了地址指向的内容;

在不同的时间里,修改了同一段的内存单元中的内容,实参形参内存单元相同.

4.swap4(int &a,&b)【改变】

  1. void swap4(int& a, int& b)
  2. {
  3. int t = a;
  4. a = b;
  5. b = t;
  6. }
  7. int main()
  8. {
  9. int a = 10;
  10. int b = 20;
  11. printf("交换前:a=%d b=%d\n", a, b);
  12. swap4(a,b);
  13. printf("交换后:a=%d b=%d\n", a, b);
  14. return 0;
  15. }

运行结果:

cf5ae67e76ef40c4a3e0178c0e19557a.png

对实参本身进行修改;

不同的时间里修改了自己本身。

  1. void Swap_err2(int* p1, int* p2)//error
  2. {
  3. int* tmp;
  4. tmp = p1;
  5. p1 = p2;
  6. p2 = tmp;
  7. }

 

 

 

 

 

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

闽ICP备14008679号