C++中引用到底是什么?通常解释是引用是变量的别名。这篇文章将解释清楚,C++中根本就没有叫做别名的东西。

 

在C/C++中,访问一个变量只能通过两种方式:

1、通过值 访问 / 传递变量

2、通过地址 访问 / 传递变量 (这种方法就是指针)


除此之外第三种:引用变量也是个指针变量,也拥有内存空间。最关键的是引用是一种会被编译器自动解引用的指针。


#include <iostream>

using namespace std;

int main()

{

    int i = 10; //整形变量

    int &j = i; //i的引用


    j++;

    //打印i和j的值

    cout << i << j << endl; //打印1111

    //打印i和j变量的地址

    cout << &i << &j << endl; //结果地址相同

}

引用其实就是C++中的常量指针表达式int &j = i;将会被编译器转化成 int *const j = &i;

引用之所以要初始化是因为const类型变量必须初始化


下面的代码使用编译器的那套语法将引用替换掉。

#include <iostream>

using namespace std;

int main()

{

    int i = 10;

    int *const j = &i;


    (*j)++;

    cout << i << *j << endl;

}


结论:C++标准并没有解释编译器如何实现引用的行为。所以实现取决于编译器,大多数情况下就是将其实现为一个const指针。