左值引用,指针,形参实参的恩怨纠葛——及推荐的编码风格

一张图观察 引用,指针,形参调用

在这里插入图片描述
图片来源:中国大学MOOC——C++程序设计(面向对象进阶)崔毅东 、杨谈
第3单元——第1节

总结:写法上的区别

在指针传递时,调用函数时,要写&,表明传址
在函数声明,用"星号"表示来的是指针
在函数体内部要修改时,也全程用*

在引用时,仅在函数声明,用“&”表明是个别名

引用的优点

相比于指针
避免在函数内部 频繁用*来表明何时需要修改
和在函数调用时,需要取地址&

引用的弊端

bool do_something(int a, double b, char& c);

int a = 1;
double b = 2.34;
char c;
bool ok = do_something(a, b, c);

不知道你是否发现一个问题?
传进去3个参数,而第三个参数c,我们用了引用,表明是需要修改的;而对于一个“初学者“or”大程序“上百行时,我们如何才能分辨传进去的哪些变量是要修改的呢
光写”do_something(a, b, c)“产生了语法上的歧义
影响了代码的可读性

建议的书写风格

以上转述自知乎——Graphene
在这里插入图片描述
接下来引述该大佬的一段话
”很多大厂的 C++ 生产规范(例如隔壁老 G 家的)也明令禁止左值引用类型参数。有学过 Java 等自带 GC 语言的同学可能会认为“多余的应该是指针,而不是引用”,但有很多事情是 C++ 引用做不到而需要依赖于指针的,例如存储空值、重新赋值和做哈希比较。“

推荐用引用的顺序

普通变量<自定义数据结构<算法库等库函数,STL容器等,类~作为函数返回值

引用作为函数返回值优点

返回的变量本身,而不是额外创建的内存,有助于提高程序效率
示例1:返回值进行引用

bool &do_something(int a){
	return a;
}
bool flag=do_something(1;

承接示例1:在定义变量时进行引用

bool &flag=do_something(1);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值