c++中的引用
来源:互联网 发布:正规购买淘宝小号平台 编辑:程序博客网 时间:2024/06/05 22:49
1.什么是引用?
--引用是变量的一个别名,通过这个别名和原来的名字都可以找到这份数据。一个人的名字和绰号,表示同一个人。
(1)引用和变量
格式:<类型> &name = data;
注意:引用必须在定义的时候同时初始化,后面不能再引用其他数据,类似于const;
例:
#include <iostream>using namespace std;int main(){ int a = 99; int &b = a; cout<<a<<","<<b<<endl; cout<<&a<<","<<&b<<endl; return 0;}
引用在定义的时候加&,使用的时候不用,加&表示地址。不希望引用修改数据,就在前面加const;(常引用)
格式:const <类型> &name = data;或<类型> const &name = data;
(2)引用作为函数参数
用引用作为形参,调用时形参和实参就绑定在一起,指向同一份数据,如同C中的地址传递。修改形参,实参也改变,不会出现C中数值传递的时候实参不改变。
例:
#include <iostream>using namespace std;void swap1(int a, int b);void swap2(int *p1, int *p2);void swap3(int &a, int &b);int main(){ int num1, num2; cout<<"Input two integers: "; cin>>num1>>num2; swap1(num1, num2); cout<<num1<<" "<<num2<<endl; cout<<"Input two integers: "; cin>>num1>>num2; swap2(&num1, &num2); cout<<num1<<" "<<num2<<endl; cout<<"Input two integers: "; cin>>num1>>num2; swap3(num1, num2); cout<<num1<<" "<<num2<<endl; return 0;}//直接传递参数内容void swap1(int a, int b){ int temp = a; a = b; b = temp;}//传递指针void swap2(int *p1, int *p2){ int temp = *p1; *p1 = *p2; *p2 = temp;}//按引用传参 a,b分别绑定num1,num2了void swap3(int &a, int &b){ int temp = a; a = b; b = temp;} (3)引用作为函数返回值#include <iostream>using namespace std;int &sum(int &num){ num = num +1; return num;}int main(){ int n = 20; int m = sum(n); cout<<m<<endl; return 0;}注意:不能返回局部变量的引用;例:#include <iostream>using namespace std;int &plus10(int &n){ int m = n + 10; return m; //返回局部数据的引用}int main(){ int num1 = 10; int num2 = plus10(num1); cout<<num2<<endl; int &num3 = plus10(num1); int &num4 = plus10(num3); cout<<num3<<" "<<num4<<endl; return 0;}2、引用的本质,和指针的区别引用只是对指针进行了封装,底层还是通过指针实现的。3、引用必须在定义时初始化,从一而终,不能指向其他数据;指针没这个限制,不一定赋值,也能指向任意数据。4、可以有const指针,但是没有const引用; int a = 20;int & const r = a;const int *const ptr ;多此一举5、指针可以有多级:int **p;但引用int &&p是错误的;可以如下:int a = 10;int &r = a;int &rr = r;6、指针和引用的自增++,自减--表示不一样。指针表示指向的地址发生改变,指向下一个单元;引用表示指向的值改变; int a=3 int*ptr=&a; ptr++; ptr--; 0x100000000; int a = 3; int &b= a; b++; b--; #include <iostream>using namespace std;int main (){ int a = 10; int &r = a; r++; cout<<r<<endl; int arr[2] = { 27, 84 }; int *p = arr; p++; cout<<*p<<endl; return 0;}
阅读全文
0 0
- c语言中的引用
- 【C++】:C++中的引用
- 深入探讨C 中的引用
- 深入探讨C 中的引用
- C++/CLI中的引用类型
- 深入探讨C 中的引用
- C++中的引用
- [C++]C++中的引用(转)
- 【引用】C中的类型转换
- C语言中的引用调用
- 深入探讨c++中的引用
- C/C++中的指针、引用和JAVA中的引用
- C/C++中的引用和指针
- c语言形参中的引用变量
- C/C++中的引用和指针
- C/C++中的引用和指针
- c语言实现cpp中的引用传递
- C和C++中的引用和指针
- Firefox 无法拖拽搜索
- Tensorflow运行github上Faste-rcnn各种问题解决方法
- 微博广告Hubble系统:秒级大规模分布式智能监控平台架构实践
- 自定义属性--你真的了解match_parent吗
- Android常用控件
- c++中的引用
- gcc中(-I -l -L)参数的意义
- 并查集--算法,优化,变种
- SpringMVC执行流程
- 上手ajax
- 尝试使用laravel
- Android通过OpenCV获取摄像头帧数据并在悬浮框显示
- 小结学习微信小程序
- 解决光纤猫恢复出厂功能后的上网问题