C++中引用是什么

C++中引用是什么

引用不是新定义一个变量,而是给已存在的变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间

类型 & 引用变量名 (对象名) = 引用实体

引用是变量的别名。声明引用时,需要将其初始化为一个变量,因此引用只是另一种访问相应变量存储的数据的方式。

要声明引用,可使用引用运算符( &),如下面的语句所示:

VarType original = Value;
VarType& ReferenceVariable = original;

2.1 引用在定义时必须初始化

int main
{
    int a = 10;

    //int& b; 编译不通过
    int& b = a;

}

2.2 一个变量可以有多个引用

int main
{
    int a = 10;
    int& b = a;
    int& c = a;
    int& d = c;
}
// b、c、d都是a的引用

2.3 引用只能引用一个实体,引用后不能再引用其他实体

int main
{
    int a = 10;
    int& b = a;

    int c = 5;
    //b = c 编译不通过
}

要更深入地了解如何声明和使用引用,请参阅以下示例程序:

#include 
using namespace std;

int main()
{
    int original = 30;
    cout << "original = " << original << endl;
    cout << "original is at address: " << hex << &original << endl;

    int& ref1 = original;
    cout << "ref1 is at address: " << hex << &ref1 << endl;

    int& ref2 = ref1;
    cout << "ref2 is at address: " << hex << &ref2 << endl;
    cout << "Therefore, ref2 = " << dec << ref2 << endl;

    return 0;
}

输出:

original = 30
original is at address: 0099F764
ref1 is at address: 0099F764
ref2 is at address: 0099F764
Therefore, ref2 = 30

分析:
输出表明,无论将引用初始化为变量(如第 9 行所示)还是其他引用(如第 12 行所示),它都指向相应变量所在的内存单元。 因此, 引用是真正的别名, 即相应变量的另一个名字。 第 14 行显示了 ref2 的值,结果与第 6 行显示的 original 值相同,因为 ref2 是 original 的别名,它们位于内存的同一个地方。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

你可能感兴趣的:(C++编程基础,c++)