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) ///自定义了一个类型AaA的对象。。。{    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;}
原创粉丝点击