c++ &(引用)
1、简介
引用(reference)就是C++对C语言的重要扩充。引用是给别的已经存在的变量取得别名。它不单独开辟空间,它和引用的变量共同用同一块地址。对引用的操作与对变量直接操作完全一样。
2、C++为什么要提出引用
使用引用参数的主要原因有两个:
1.能够修改调用函数中的数据对象,因为引用与原对象指向地址的同一个内容,引用可看作是别名。
2.通过传递引用而不是整个数据对象,可以提高程序的运行速度,因为传值需要复制拷贝整个数据内容,而引用指向原来的数据内容,只是传递了一个别名。
主要先查看自己需要使用的函数中是否需要修改传入参数,然后再看自己处理的数据大小,数据对象的类型是数组?结构?或对象?来判断使用情况
这个用指针也可以。不是真正原因。我们在用指针的使用经常犯得错是什么:
1,操作空指针,
2,操作野指针,
3,不知不觉改变了指针的值,而后还以为该指针正常。
如果我们要正确的使用指针,我们不得不人为地保证这三个条件。而引用的提出就是解决这个问题。
总结:引用可以理解成在被一些条件束缚住的指针,这里并不是说引用是指针,我的意思是,当指针被一些条件束缚住,他的属性等于引用。这些条件是:1,不是空指针,2,指向的内存必须存在,3,该指针的值永远不变。引用的提出就是:让人为地保证这三个条件变成让编译器保证。这样可以减少错误的产生。
和指针的区别:
3、引用
引用是给别的已经存在的变量取得别名。它不单独开辟空间,它和引用的变量共同用同一块地址。指针是两个内存地址copy了同一份值。引用概念上定义一个变量的别名,指针存储一个变量地址。
&在此不是求地址运算,而是起标识作用
声明引用时,必须同时对其进行初始化
int a=2,&ra=a;//a为目标原名称,ra为目标引用名。给ra赋值:ra=1; 等价于 a=1;读作 "ra是一个初始化为 a 的整型引用"
引用变量
void Swap(int& left, int& right) {
int temp = left;
left = right;
right = temp; }
引用作为返回值。函数名称前面加引用符号“&”的意思是返回引用类型
int& Add(int a, int b) {
int c = a + b;
return c;
}
int& ret = Add(1, 2);
Add(3, 4);
printf("ret=%d\n",ret); //ret=7