zoukankan      html  css  js  c++  java
  • [C++程序设计]引用

    对一个数据可以使用“引用”(reference),这是C++对C的一个重要扩充,引用是一种新的变量类型,它的作用是为一个变量起一个别名。假如有一个变量a,想给它起一个别名b,可以这样写:
    int a; //定义a是整型变量
    int &b=a; //声明b是a的引用

    注意: 在上述声明中,&是引用声明符,并不代表地址。不要理解为“把a的值赋给b的地址”。声明变量b为引用类型,并不需要另外开辟内存单元来存 放b的值。b和a占内存中的同一个存储单元,它们 具有同一地址。声明b是a的引用,可以理解为: 使变量b具有变量a的地址。如果a的值是20,则b的值也是20。

    在声明一个引用类型变量时,必须同时使之初始化,即声明它代表哪一个变量。在声明变量b是变量a的引用后,在它们所在函数执行期间,该引用类型变量b始终与其代表的变量a相联系,不能再作为其他变量的引用(别名)。下面的用法不对:
    int a1,a2;
    int &b=a1;

    这种传递方式和使用指针变量作形参时有何不同:
    (1)使用引用类型就不必在swap函数中声明形参是指针变量。指针变量要另外开辟内存单元,其内容是地址。而引用变量不是一个独立的变量,不单独占内存单元,在例6.20中引用变量a和b的值的数据类型与实参相同,都是整型。

    引用作为函数参数

    有了变量名,为什么还需要一个别名呢?C++之所以增加引用类型, 主要是把它作为函数参数,以 扩充函数传递数据的功能。

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int main()
     5 {
     6     void sort(int &, int &, int &);
     7     int i, j, k;
     8     cin >> i >> j >> k;
     9     sort(i, j, k);
    10     cout << i << " " << j << " " << k << endl;
    11     return 0;
    12 }
    13 
    14 void sort(int &i, int &j, int &k)
    15 {
    16     void change(int &a, int &b);
    17     if(i > j) change(i, j);
    18     if(i > k) change(i, k);
    19     if(j > k) change(j, k);    
    20 }
    21 
    22 void change(int &a, int &b)
    23 {
    24     int tmp;
    25     tmp = a;
    26     a = b;
    27     b = tmp;
    28 }
  • 相关阅读:
    Java的运行机制
    java小项目之:植物大战僵尸,这个僵尸有点冷!内附素材源码
    学习Java必须避开的十大致命雷区,千万不要踩!
    教你从零开始学习java正则表达式!
    java小项目之:扫雷,这游戏没有你想的那么简单!
    CentOS 旧版下载地址
    yum相关变量浅析
    在 CentOS 中部署 KMS 服务器(vlmcsd)
    CentOS 6.x 重置root 密码
    1-VCP 框架
  • 原文地址:https://www.cnblogs.com/galoishelley/p/3859897.html
Copyright © 2011-2022 走看看