c++积累7-引用

1、引用变量

&作用:
1,取地址
2,声明引用

声明引用使用方法:

int rats = 101;
int & rodents = rats;

rodents 是 rats的别名。

demo:

#include <iostream>


int main() {
    using namespace std;
    int rats = 101;
    int & rodents = rats;
    cout << "rats = " << rats;
    cout << ",rodents = " << rodents << endl;

    cout<< "rats address = " << &rats;
    cout << ",rodents address = " << &rodents << endl;

    rodents++;
    cout << "rats = " << rats;
    cout << ",rodents = " << rodents << endl;

    rats++;
    cout << "rats = " << rats;
    cout << ",rodents = " << rodents << endl;

    return 0;
}

在这里插入图片描述

2、引用&指针

1、引用在声明时必须初始化,下面这种写法是错误的。
在这里插入图片描述
2、引用接近于const指针

int & rodents = rats;
int * const pr = &rats;

rodents 和 *pr相同。

demo演示:

#include <iostream>


int main() {
    using namespace std;

    int rats = 101;
    int *prats = &rats;

    int & rodents = *prats;


    cout << "rats = " << rats;
    cout << ",rodents = " << rodents;
    cout << ",prats = " << *prats << endl;

    cout<< "rats address = " << &rats;
    cout << ",rodents address = " << &rodents;
    cout << ",prats address = " << prats << endl;

    int bunnies = 200;
    prats = &bunnies;
    cout << "rats = " << rats;
    cout << ",rodents = " << rodents;
    cout << ",prats = " << *prats << endl;

    cout<< "rats address = " << &rats;
    cout << ",rodents address = " << &rodents << endl;
    cout << ",prats address = " << prats << endl;

    int a = 1000;
    rodents = a;
    cout << "rats = " << rats;
    cout << ",rodents = " << rodents;
    cout << ",prats = " << *prats << endl;

    cout<< "rats address = " << &rats;
    cout << ",rodents address = " << &rodents << endl;
    cout << ",prats address = " << prats << endl;

    return 0;
}

在这里插入图片描述

引用-函数参数

允许被调用函数直接修改调用函数传递的变量的值。C++新增的这项特性是对C的超越,C语言只能按值或者指针传递。

demo:

#include <iostream>

void swapr(int &a, int &b);

void swapp(int *p, int *q);

void swapv(int a, int b);


int main() {
    using namespace std;
    int wallet1 = 100;
    int wallet2 = 200;
    cout << "wallet1  = " << wallet1;
    cout << ", wallet2 = " << wallet2 << endl;

    cout << "Using references to swap: \n";
    swapr(wallet1, wallet2);
    cout << "wallet1  = " << wallet1;
    cout << ", wallet2 = " << wallet2 << endl;

    cout << "Using pointers to swap: \n";
    swapp(&wallet1, &wallet2);
    cout << "wallet1  = " << wallet1;
    cout << ", wallet2 = " << wallet2 << endl;

    cout << "Using values to swap: \n";
    swapv(wallet1, wallet2);
    cout << "wallet1  = " << wallet1;
    cout << ", wallet2 = " << wallet2 << endl;

    return 0;
}

void swapr(int &a, int &b) {
    int temp;
    temp = a;
    a = b;
    b = temp;
}

void swapp(int *p, int *q) {
    int temp;
    temp = *p;
    *p = *q;
    *q = temp;
}

void swapv(int a, int b) {
    int temp;
    temp = a;
    a = b;
    b = temp;
}

输出:
在这里插入图片描述

const+引用

摘自C++ primer plus
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值