• C/C++基础(三)


    解决问题:

    了解C++变量?

    了解C++引用的作用?

    了解C++引用的本质?

    1. C++变量

    • 变量名实际上是一段连续的内存空间的别名。
    • 程序通过变量来申请并命名内存空间。
    • 通过变量的名字可以使用存储空间。

    2. 引用是C++对C的重要补充。在C/C++中指针的作用基本一样,但是C++增加了另外一种给函数传递地址的途径,就是按引用传递。引用可以作为一个已定义变量的别名。

    语法:

    Type& ref = val;

    案例1:

    void test0(){
        int a = 10;
        int& b = a; // 给变量a取个别名
        b = 100;
        int& c = a; // 一个变量可以有n个别名
        c = 200;
    }
    
    void test1(){
        int a = 10;
        int b = 20;
        // int& ref; 引用必须初始化
        int& ref = a; // 引用一但初始化就不能被改变
        // ref = b; //不能改变引用
    }
    
    void test2(){
        // 建立数组引用的方法一
        typedef int ArrRef[10];
        int arr[10];
        ArrRef& aRef = arr;
        for (int i = 0; i < 10; ++i){
            aRef[i] = i + 1;
        }
    
        // 建立数组引用的方法二
        int (&f)[10] = arr;
        for (int i = 0; i < 10; ++i){
            f[i] = i + 10;
        }
    }

    3. 函数参数和返回值。

    最常看见引用的地方是函数参数和返回值。当引用被作为函数参数时,在函数内对任何引用的修改,将对还函数外的参数产生改变。当然也可以通过指针来完成同样的事情,使用引用语法上更加清晰。
    如果函数返回一个引用,必须像从函数中返回一个指针一样对待。当函数返回值时,引用关联的内存一定要存在。

    案例2:

    void valueSwap(int n, int m){
        int temp = n;
        n = m;
        m = temp;
    }
    // 交换失败
    
    void pointSwap(int *n, int *m){
        int temp = *m;
        *m = *n;
        *n = temp;
    }
    // 交换成功
    
    void refSwap(int &m, int &n){
        int temp = m;
        m = n;
        n = temp;
    }
    // 交换成功

    上面的案例中,地址传递和引用传递都能达到相同的目的,所以C++更主张引用传递,因为语法上更清晰。

    4. 引用的本质

    引用的本质是一个指针常量。

    Type& ref = val; // Type* const ref = val;

    所以,引用所占空间大小和指针相同。

  • 相关阅读:
    using 关键字有两个主要用途:
    Pl/SQL 从零开始
    SQL从零开始
    wcf 从零开始
    设置主键
    dbf导入sqlserver
    SHBrowseForFolder
    oracle 导入导出数据库
    sql改列名
    Delphi 为Edit或是Memo添加一个气球提示
  • 原文地址:https://www.cnblogs.com/mungerz/p/10512055.html
Copyright © 2020-2023  润新知