C++:引用的本质及使用

✨一:引用的本质

😜1. 引用的本质通常来说就是起别名。但是它的实质在c++内部就是指针常量
如:

	int num1 = 10;
    int &num2 = num1;   // int *const num2 = &num1; 也说明了引用必须初始化
补充:**指针常量**和**常量指针**
指针常量:
int a = 10, b = 20;
int * const p = &a;
*p = 30; // p指向的地址是一定的,但其内容可以修改
常量指针:
int a = 10, b = 20;
const int *p = &a;
p = &b; // 指针可以指向其他地址,但是内容不可以改变

✨二:引用的注意事项

😜1. &在此不是求地址运算 , 而是起标识作用。
😜2. 类型标识符是指目标变量的类型。
😜3. 必须在声明引用变量时进行初始化。
😜4. 引用初始化后不能改变。
😜5. 不能有NULL引用。
😜6. 可以建立对数组的引用。(后面详解)

✨ 三:实例

😜1. 数组的引用

void test02()
{
    typedef int array1[6];
    int array2[6] = {1,2,3,4,5,6};
    array1& array3 = array2;

    for (int i = 0;i < 6;i++)
    {
        cout << array2[i] << " ";
    }
    cout << endl;

    for (int i = 0;i < 6;i++)
    {
        array3[i] = array2[i];
        cout << array3[i] << " ";
    }
    cout << endl;

}

结果:运行结果

😜2. 指针的引用

struct Student01
{
    int Age = 18;
};

void Student_Init_Pointer(Student01 **student)
{
    *student = (Student01*)malloc(sizeof(student));
    (*student)->Age = 19;
}

void Student_Init_Reference(Student01 *&student)
{
    student->Age = 20;
}
void test03()
{
    Student01 *student = NULL;
    Student_Init_Pointer(&student);
    cout << "指针间接赋值" << student->Age << endl;
    Student_Init_Reference(student);
    cout << "引用赋值" << student->Age << endl;
}

在这里插入图片描述

😜3. 常量引用:其实就是对const引用的简称

void test04()
{
    int num3 = 100;
    const int& num4 = num3;   //此时num4就是num3
    cout << "num3=" << num3 << endl;
    cout << "引用:num4=" << num4 << endl;
    //    num4 = 200;是错误的,const引用时不能修改的
}

void test05()
{
    //  int& num5 = 300;是错误的,普通引用不能赋字面量
    const int& num6 = 300;    //常引用可以赋字面量
    cout << "引用:num6=" << num6 << endl;
}

在这里插入图片描述

🐱‍🚀注意:常引用一般使用的场景
✔常引用主要用到函数的形参中,尤其是类的拷贝/复制函数。
✔若果希望实参随形参的改变而改变,就是一般引用;反之,就是常引用。

✨总结:

  • 引用是c++对c的重要扩充。
  • 本质就是指针常量
  • 欢迎大家评论交流!🌹🌹🌹
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值