最近在自学C++,遇到了C++的引用,理解了那么一点点,所以记录下来,方便以后查看。C++引用语法上我早就懂了,但之前我不明白为什么会有引用的语法。
int main(){
int a = 10;
int &b = a;
}
上面的代码就是C++的引用语法,创建b的时候就得马上给b赋值。b就其实就相当于给a取了个另外一个名字,b和a都是同一个东西。以前的时候我就纳闷了,这样的做法有何意义,直接用a不就行了吗,为什么得给他取另外一个名字,然后用另外一个名字。下面的代码时我对引用的一些理解。
void A(int *a){
*a = 20;
}
void B(int &a){
a = 21;
}
int main(){
int age = 1;
A(&age); //age =20;
B(age); //age = 21;
}
看完上面的代码可能更纳闷了,A和B函数都能改变age的值,A函数用指针的方法,B函数用引用的方法。直接用A不就完了吗?其实是这样的,A函数的功能和B函数的功能都是一样的,但是从执行效率上来讲B函数要快些,因为B函数用引用不用再开辟空间了。但是A函数定义int *age这个指针时还得为这个指针开辟空间。所以我个人理解是引用应该是常用于函数的形参中。
上面我说到创建引用时应该马上赋值,可能有些人会问我在定义函数定义那个引用并没马上赋值啊!哈哈,别忘了,函数是在被调用时参数形参才会被创建。所以当B函数被调用时其实就是B(int &a = age);
我理解总结的是引用能做的事,指针都能做,指针能做的事,引用不一定能做。我没怎么用深入地使用C++语言做项目,很多理解可能都停留在表面上,希望对引用有更深理解的同行们指点更正。