zoukankan      html  css  js  c++  java
  • 引用&指针交换函数实践

    实践如下:

    #include <iostream>
    
    using namespace std;
    
    // 普通交换,注意这里的ab值,在具体调用时是基本数据的拷贝,原始数据不会变化
    // 因此这里交换后的值是不会变化的
    void swap(int a, int b){
        int tmp  = a;
        a = b;
        b = tmp;
    }
    
    // 引用交换, 参数和原始数据指向同一个地方,也可以理解为一种指针
    void refSwap(int &a, int &b){
        // 需要定义tmp存放临时变量的值
        int tmp = a;
        a = b;
        b = tmp;
    }
    
    // 指针交换, 参数和原始数据指向同一个地方
    void pointSwap(int *a, int *b){
        // 需要定义tmp存放临时变量的值
        int tmp = *a;
        // 指针指向地址值的调换
        *a = *b;
        *b = tmp;
    }
    
    int main(){
    
        cout << "引用&指针交换函数实践:" << endl;
        int a = 11;
        int b = 22;
        cout << "临时变量交换:"<< endl;
        swap(a, b);
        cout << "a:" << a << endl;
        cout << "b:" << b << endl;
    
        cout << "传引用交换:"<< endl;
        // 注意: 调用传引用时,只要传递普通常量就可以
        // 这里可以结合函数参数, &a = a, 所以这里只需要写a
        refSwap(a, b);
        cout << "a:" << a << endl;
        cout << "b:" << b << endl;
    
    
        cout << "指针交换:"<< endl;
        // 注意: 调用指针用时,需要加&
        // 这里可以结合函数参数, *a = &a, 所以这里需要写&取地址
        pointSwap(&a, &b);
        cout << "a:" << a << endl;
        cout << "b:" << b << endl;
    
        cout << "end." << endl;
        return 0;
    }

    输出如下:

  • 相关阅读:
    scala环境配置+hello world!
    mysql无法登录
    ajax跨域
    jfinal框架页面找不到相关css,js文件404
    从程序员到CTO的Java技术路线图 作者:zz563143188
    在項目中快速部署SLF4J+LOGBACK
    Spring整合MyBatis
    SpringMVC常用注解實例詳解3:@ResponseBody
    浏览器包含哪些进程?
    前端程序员也需要知道进程和线程
  • 原文地址:https://www.cnblogs.com/do-your-best/p/11141644.html
Copyright © 2011-2022 走看看