指针(*)与引用(&)的理解和思考
一直用C,突然看到 int &b=a; 有点发懵,决定把这个东西弄清楚
先说C语言吧
关于指针(*),就是数据的地址
(&)在C里面就是取地址,int *a = &b ;就是把b的地址给a,通过a可以访问到b地址上的数据
再来说开始的那个语句,
int a = 100;
int &b=a;
看到这个语句,第一反应是C语言里面好像没这么写的。
查了一下资料,果然,引用是C++对C的一种拓展。那么,该如何理解引用呢?
一般的教科书上都会写**“引用就是绑定,把b和a绑定了,b就是a,a就是b,对b修改也就是对a修改,b就是a的别名”**
以上段代码为例,b和a绑定了,b的数值就是100,b的地址跟a是一致
举个栗子,一看就明白:
这句话也不长,记下来也没问题。
但是最好还是往深处想想
int a = 1;
int *b = &a;
int &c = a;
先看下这三个语句,把逐个来理解
第一个,a是一个 int类型的变量,a的数值为1
第二个,b是一个int*类型的变量(b是一个指针,这个指针指向一个int类的数)
第三个,类似的,c首先是一个变量,c是什么类型呢?是int&的,怎么理解呢?同第二个,我们知道&的初始意思是取地址,也就是说,c是一种【取地址】的数据类型,取的是int类型的地址。
也就说 c这个变量取了a的地址作为自己地址
这种理解只是辅助理解,未必跟C++的标准一致
以上