C++引用(Reference)

一、什么是引用

在C++中,引入引用就是为了避免指针在使用过程中可能出现的问题(空指针,不合法内存),提高程序的安全性。

引用是一种关系型声明的类型,说明它跟别的变量的关系,它所声明的变量不占内存空间,通俗来讲,是已有变量的别名,来说明跟已有变量的关系,所以引用变量的类型要跟已有变量的类型保持一致。

引用引入分析:

 二、引用的基本语法和注意事项

语法:type* --- 代表指针

type & ---> 引用类型 比如: int& ,char&

int --- int*(指针类型跟指向的类型保持一致)

在声明引用变量时,一定要说明跟其他变量的关系(必须初始化)

int i;

int& ri = i; //说明ri是i的别名,ri是引用类型声明变量

 

 

 

#include <iostream>


using namespace std;

int main()
{
    int a = 10,b=20; //普通变量
 
    int& ra = a; //右值是一个变量名 --- 初始化,一经初始化,不可更改


    cout << &a =  << &a<<endl;//&a = 0x61feb8


    cout << &ra =  << &ra<<endl;// &ra = 0x61feb8 说明他们两个都代表着同一块内存


    cout << ra =  << ra << endl;//10 使用ra就相当于使用变量a
    ra = 100;
    cout << a =  << a << endl;//100


    int& raa = ra; //使用引用变量来初始化引用变量,这样结果就是使得普通变量多一个别名而已
    cout << raa =  << raa << endl;//100
    raa = 1000;


    cout << a =  << a << endl;//1000
    cout << ra =  << ra << endl;//1000
    cout << raa =  << raa << endl;//1000


    ra = b;//引用变量ra相当于把变量b的值,拿过来给a  --- 赋值操作
    cout << a << endl;//20


    //指针意义 --- 在于可以间接访问内存
    int* p = &a;


    *p = 200; //*在赋值符号的左边,相当于写内存,在赋值符号的右边,相当于读内存


    cout << a =  << a << endl;
    cout << ra =  << ra << endl;
    cout << raa =  << raa << endl;


    int& pa = a;

    return 0;
}

   引用是一种类型(type&),该类型的作用就是用来声明两个变量之间的关系
   引用在声明变量时,必须初始化----它声明的变量 ---被叫作引用变量

   总结:
     1)引用声明变量时,必须初始化
     2)引用变量一经初始化,不可更改
     3)一个变量可以被多次引用,每引用一次就多一个别名
     4)&符号前有数据类型时为引用 ,其他情况下,为取地址
 

 三、引用的应用

对于引用而言,如果只在一个函数中使用变量,没有必要使用引用,使用基本的数据类型就可以,基本的数据类型除了在函数中可以用来声明变量之外,还可以做函数的形参函数的返回值

#include <iostream>


using namespace std;

//编写一个函数,来修改外部变量b的值
//使用指针

void modify_b(int* p)// int* p是在函数内部声明的一个指针变量,要分配内存:4字节
{
    if(nullptr == p)
        return;


    *p = 200;
}

//使用引用
void modify_rb(int& rb) //int& rb = b 节省内存
{
    rb = 300;
}

int main()
{
    int b = 100;
    //int& rb = b; 同一个函数中,使用引用,意义不明显

    modify_b(&b); //传递变量的地址 32位占4字节

    cout << b <<endl;//200

    modify_rb(b); //函数在调用时,编译器int& rb = b只是用来声明rb是b的别名 --- 只是声明,并没有发生地址的拷贝

    cout << b <<endl;//300

    return 0;
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值