c++—引用。。。
来源:互联网 发布:做网站 知乎 编辑:程序博客网 时间:2024/05/22 12:50
目录
- 目录
- 前言
- 引用的概念
- 交换a和b的值
- 引用作为函数的返回值
- 常引用
- 例子
前言
纯自学,看的mooc上郭老师的课,整理整理。。。不然全忘了。。
引用的概念
类型名&引用名=某变量名;
int&r=n;
r引用了n,r的类型是int&,r是引用变量。
某个变量的引用等价于这个变量,r和n是一回事。
注意:
定义引用时一定将其 初始化成引用某个变量;
初始化后,他就一直引用该变量,不会再引用别的变量;
引用只能引用变量,不能引用常量和表达式;
double a=4,b=5;double &r1=a;double &r2=r1;r2=10;cout<<a<<endl;//输出10r1=b; ///r1没有引用b,而是从一而终的引用a,这里只不过是对r1赋值; cout<<a<<endl; ///5
交换a和b的值:
指针间接取值
void swap(int*a,int*b){int tmp;tmp=*a;*a=*b;*b=tmp;}int n1,n2;swap(&n1,& n2);///传变量地址调用
传引用调用
int &swap(int &x,int &y){int t=a;int a=b;int b=t;}swap(m,n);///m,n等价于x,y,于是x,y交换,就m,n交换;
引用作为函数的返回值
int n=4;int &setvalue(){return n;}//函数返回值是引用,这个引用引用了全局变量n;int main(){ setvalue()=40;//等价于对n赋值 cout<<n; return 0;}///输出40
常引用
不能通过常引用修改其引用的内容;
int n=10;const int&r=n;r=200;//错n=300;//可以,引用的内容可以被修改,只不过不能通过常引用修改。。
例子
#include <iostream>using namespace std;class A{ public: int x; int getX() { return x; } };void swap(A&a,A&b) ///自定义了一个类型A,a是A的对象。。。{ int tmp = a.x; a.x = b.x; b.x = tmp;}int main(){ A a,b; a.x = 3; b.x = 5; swap(a,b); cout << a.getX() << "," << b.getX(); return 0;}
交换指针,有时在数组里用到。。。
不过可以用strcpy,挺麻烦。。
#include <iostream>using namespace std;void swap(int*&a,int*&b)///交换两个指针指向的地址,引用的是个指针。。。{ int * tmp = a; a = b; b = tmp;}int main(){ int a = 3,b = 5; int * pa = & a; int * pb = & b; swap(pa,pb); cout << *pa << "," << * pb; return 0;}
返回值是引用,引用了a[i],于是返回值是它。。
然后对它赋值
#include <iostream>using namespace std;int& getElement(int * a, int i){ return a[i];}int main(){ int a[] = {1,2,3}; getElement(a,1) = 10; cout << a[1] ; return 0;}
阅读全文
0 0
- c++—引用。。。
- 【C++】基础知识—引用和指针引用
- C++——引用简介
- C/C++——引用和指针
- 初学c/c++——浅谈引用
- 引用(c++)
- C++----引用
- c++-引用
- C ++ 引用
- 【c++】引用
- 【c++】引用
- C++:引用
- C++:引用
- C++——左值引用和右值引用
- C++——左值引用和右值引用
- C/C++:C++引用
- 【c/c++】const引用
- C#——引用参数的操作
- Nginx多级代理,获取客户端真实请求IP以及每级代理IP
- spring与struts2的区别
- Learning URDF Step by Step
- PDO获取结果集
- 使用redis进行用户接口访问时间次数限制
- c++—引用。。。
- linux常用命令
- bat入门
- feurio中文版下载地址附使用教程
- windows 环境下在anaconda 3中安装python2和python3两个环境(python2和python3共存)
- 机器学习实战笔记-决策树
- XListView实现上拉加载下拉刷新,注意事项
- java.util.concurrent.locks
- rs.next()