89讲 C++中的引用
内容纲要

引用

引用的基本使用

作用:给变量起别名。
语法:数据类型 &别名 = 原名

file

#include <iostream>
using namespace std;

void main()
{
    //引用的基本语法
    int a = 10;
    //数据类型 &别名 = 原名;
    //创建引用
    int& b = a;

    cout << "a = " << a << endl;
    cout << "&b = " << b << endl;

    b = 100;

    cout << "修改后 a = " << a << endl;//100
    cout << "修改后 &b = " << b << endl;//100
}

引用的注意事项

  1. 引用需要初始化。
    int &b; //错误的
  2. 引用一旦初始化后就不能更改。(区别于指针)

file

引用做函数参数

作用:函数传参时,可以利用引用的技术让参数修饰实参
优点:可以简化指针修饰实参

#include<iostream>
using namespace std;

//交换函数
//1.值传递
void swap01(int a , int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

//2.地址传递

void swap02(int* a,int* b)
{
    int temp;
    temp = *a;
    *a = *b;
    *b = temp;
    cout << "值传递之后交换后的a的值:" << *a << endl;
    cout << "值传递之后交换后的b的值:" << *b << endl;
}

//3.引用传递
void swap03(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}

void main()
{
    int a = 10;
    int b = 20;
    swap03(a, b);
    cout << "值传递之后交换后原函数的a的值:" << a << endl;
    cout << "值传递之后交换后原函数的b的值:" << b << endl;
    system("pause");
}

引用做函数的返回值

  1. 不要返回局部变量引用
  2. 函数调用可以作为左值
#include <iostream>

using namespace std;

//  引用做函数的返回值

//1、不要把引用做局部变量的返回值。
int& test01()
{
    int a = 10;
    return a;
}
//2、函数的调用可以作为左值
int& test02()
{
    static int a = 10;
    return a;
}

void main()
{
    int &b = test01();
    cout << "接收到的地址&a =  " << b << endl; //第一次正确接收。因为编译器对返回的值做了一次保留
    cout << "接收到的地址&a =  " << b << endl; //非法访问内存。,第二次结果乱码,因为返回的地址已经丢了。

    int &c = test02();
    cout << "接收到的地址&c =  " << c << endl;
    cout << "接收到的地址&c =  " << c << endl; 

    test02() = 1000;   //函数的调用作为左值!!!!!

    cout << "接收到的地址&c =  " << c << endl;
    cout << "接收到的地址&c =  " << c << endl;

    system("pause");
}

引用的本质

本质:引用的本质在c++ 内部实现是一个指针常量。
引用必须初始化。且初始化之后不能修改指向。

file

常量引用

file

作用:常量引用主要用来修饰形参,防止误操作。

在函数形参列表中,可以加 const 来修饰形参,防止形参比改变实参。

使用场景:如下,int &value 作为形参 的时候可以修改传入的值,因此为了误操作可以添加const 使其变为只读。

#include <iostream>

using namespace std;

void showValue(int &value) {
    value = 1000;
    cout << "value 的值为:" << value << endl;
}

void main()
{
    //常量引用
    //使用场景:用来修饰形参,防止误操作。

    int a = 10;
    showValue(a);
    cout << "main函数中a 的值为:" << a << endl;

    system("pause");
}

将showValue() 函数形参改为常量引用(如果函数中误操作,编译器会帮你报错)

void showValue(const int &value) {
    //value = 1000;
    cout << "value 的值为:" << value << endl;
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇