&操作符常见用法
来源:互联网 发布:u盘之家淘宝店 编辑:程序博客网 时间:2024/06/14 04:19
一种是按位与 1 & 2 = 0
一种是取地址int* p = &a;
一种是声明引用,相当于定义变量别名:
int a = 3;
int& b = a; // b是a的引用,a,b是同一个变量
b = 4; // a也变化为4
int c = 2;
b = c; // 是赋值给b或a,而不是把b作为c的引用,引用一旦被声明,引用对象不可更改
引用的实质是指针的简化运用版,上面的代码等价为:
int a = 3;
int* const b = &a; // 常指针,b的位置不能更改,相当于引用不能更改自身的引用对象
*b = 4;
所以引用省去了声明时的取地址操作和对变量内存地址引用时的解引用操作,而且引用不能随意被更改,站在指针的角度上说,引用的意义等价于一个常指针,也就是不能改变自己指向位置的指针。
引用在作为参数传递的时候,传递的是实参本身,c++里面类设计经常要传递整个类作为参数,但如果在不必要的时候使用传统的按值传递,效率损失可见一斑:
class foo {
public:
....
int a;
double b;
string c;
};
void bar(foo f) { //输出abc }
比如这个函数bar,传参的时候是按值传递,也就是实参的所有数据被重新复制到参数f里,构造了一个新对象f,它只是输出参数f的abc成员,所以必要重新构造一个临时对象f,这样造成了效率的损失,解决方法有2种:
void bar1(foo* f){ cout << f->a << f->b << f->c; }
var bar2(foo& f) { cout << f.a << f.b << f.c; }
这2种方式的运作机制是相同的,但是后者要更简洁和优美一些,特别是在操作多层间接指针的函数里面,直接使用指针的话,过多取地址&和解引用*容易造成代码混乱,降低可读性。
- &操作符常见用法
- C++位操作的常见用法小结
- R-常见操作符
- rxjs常见操作符
- MySql的基本用法(2)_常见的数据库操作
- Java操作mongoDB2.6的常见API用法
- c++ vector的几个常见操作的用法测试
- Java操作MongoDB2.6的常见API用法
- JavaScript中常见的字符串操作函数及用法
- JavaScript中常见的数组操作函数及用法
- JavaScript中常见的字符串操作函数及用法
- JavaScript中常见的数组操作函数及用法
- JavaScript中常见的字符串操作函数及用法
- JavaScript中常见的字符串操作函数及用法
- STL-list支持的集中常见操作的用法
- 位操作符常见用途
- Ruby 不常见操作符
- C语言常见操作符
- 如何在ubuntu中安装中文输入法
- android之安装使用NDK
- 编译 android 2.1 (eclair) 源码 For HTC G1
- Android自带的人脸识别
- Single Sign-On 单点登录技术谈
- &操作符常见用法
- android系统自带的Service原理与使用
- 添加用户数据库
- 语音识别方法三:使用Service调用语音识别程序
- 在ubuntu中编译内核源码
- android典型应用之gps
- Android的开机流程
- android_G1_刷机
- 测试驱动开发TDD 笔记