在网上看到看到下面引用的解释,觉得挺好的就复制粘贴了下来。我写博客是为了自己理解清楚的知识体系,让知识不要混乱,更好的记住。
在 c/c++ 中,访问一个变量只能通过两种方式被访问,传递,或者查询。这两种方式是:
通过值 访问 / 传递变量
通过地址 访问 / 传递变量 – 这种方法就是指针
除此之外没有第三种访问和传递变量值的方法。引用变量也就是个指针变量,它也拥有内存空间。最关键的是引用是一种会被编译器自动解引用的指针, c++ 中根本就没有什么叫做别名的东东,但我还是觉得起这样的名字是便于理解
#include<iostream>
using namespace std;
int main()
{
int a =10;
int b =20;
int *p =&a;
p =&b;
*p = 200;
cout<<a<<endl;
//c++的引用是变量的别名
//其在定义的时候必须用变量初始化
int & ra = a;
ra = b; //a = b;
ra = 500;
// *(int*)&a =500;
cout<<"ra="<<ra<<endl;
cout<<"a="<<a<<endl;
int m[10];//={1,2,3,4,5};
//err: int & rm = m; //m是数组名,本质是一个地址常数,不是变量,因为不可以给引用变量初始化;
//err: int & rn;
// cout<<rm<<endl;
const int & rc = 10;
//const int _tmp =10;
//const int & rc = _tmp;
int & rma = m[0];
int * pma = &m[0];
int * & rpma = pma;
//err: &m[0] = 0xfff000;
int * & rpmb = NULL;
//define NULL (void*)0
return 0;
}