zoukankan      html  css  js  c++  java
  • swap()函数的几种情况详解

    针对swap()可能出现的几种情况,做了详细介绍。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 /*值传递,局部变量a和b的值确实在调用swap0时变化了,当结束时,他们绳命周期结束*/
     5 void swap0(int a, int b)
     6 {
     7     int tem;
     8     tem = a;
     9     a = b;
    10     b = tem;
    11 }
    12 
    13 /*没有初始化指针就开始用,该函数是有问题的*/
    14 void swap1(int *a, int *b)
    15 {
    16     int c=4;
    17     int *tem = &c;                    /*注意tem没有分配内存,分配内存即可使用*/
    18 
    19     *tem = *a;
    20     *a = *b;
    21     *b = *tem;
    22 }
    23 
    24 /*函数内只是指针的变化,指针的值没有变化*/
    25 void swap2(int *a, int *b)
    26 {
    27     int *tem;
    28 
    29     tem = a;
    30     a = b;
    31     b = tem;
    32 
    33 }
    34 
    35 /*指针传递实现两个数的交换*/
    36 void swap3(int *a, int *b)
    37 {
    38     int tem;
    39 
    40     tem = *a;
    41     *a = *b;
    42     *b = tem;
    43 }
    44 
    45 /*指针传递实现两个数的交换*/ //最佳
    46 void swap4(int &a, int &b)
    47 {
    48     int tem;
    49 
    50     tem = a;
    51     a = b;
    52     b = tem;
    53 }
    54 
    55 int main()
    56 {
    57     int a= 1;
    58     int b= 2;
    59     cout << a<< " " << b<< endl;
    60 //    swap0(a, b);//no
    61 
    62 //    swap1(&a, &b);//分配内存yes
    63 
    64 //    swap2(&a, &b);//指针变换
    65 
    66 //    swap3(&a, &b);//yes
    67 
    68     swap4(a, b);//yes
    69 
    70     cout << a<< " " << b<< endl;
    71     return 0;
    72 }
    转载请注明出处: C++博客园:godfrey_88 http://www.cnblogs.com/gaobaoru-articles/
  • 相关阅读:
    Problem D: GJJ的日常之暴富梦(水题)
    Problem I: GJJ的日常之玩游戏(GDC)
    扩展欧几里得,解线性同余方程 逆元 poj1845
    poj3696 欧拉函数引用
    同余
    欧拉函数,打表求欧拉函数poj3090
    洛谷p1072 gcd,质因数分解
    gcd,lcm
    约数 求反素数bzoj1053 bzoj1257
    poj2992 阶乘分解
  • 原文地址:https://www.cnblogs.com/gaobaoru-articles/p/5237499.html
Copyright © 2011-2022 走看看