c++的引用

最近在自学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++语言做项目,很多理解可能都停留在表面上,希望对引用有更深理解的同行们指点更正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值