C++引用

简介: C++引用

一、引用的基本使用

引用:给变量起别名 数据类型 &别名=原名

#include <iostream>
 
using namespace std;
 
int main() {
//    引用:给变量起别名 数据类型 &别名=原名
    int a = 10;
    int &b = a;
    cout << "b=" << b << endl;
    cout << "a=" << a << endl;
    b = 100;
    cout << "b=" << b << endl;
    cout << "a=" << a << endl;
    cout << "&a=" << &a << endl;
    cout << "&b=" << &b << endl;
    return 0;
}
 
 
b=10
a=10
b=100
a=100
&a=0x63fe14
&b=0x63fe14

二、引用的注意事项

1、引用必须初始化;

2、引用初始化后,不可以改变。

#include <iostream>
 
using namespace std;
 
int main() {
    int a = 10;
// 1、引用必须初始化
//int &b; 错误,必须初始化
//2、引用初始化后,不可以改变。
    int &b = a;
    int c = 10;
    b = c;
    cout << "a=" << a << endl;
    cout << "b=" << b << endl;
    cout << "c=" << c << endl;
 
    return 0;
}
 
 
a=10
b=10
c=10

三、引用做函数参数

作用: 函数传参时,可以利用引用的技术让形参修饰实参;

优点:可以简化指针修改实参。

#include <iostream>
 
using namespace std;
 
//交换函数
//1、值传递
void mySwap01(int a, int b) {
    int tem = a;
    a = b;
    b = tem;
}
 
//2、地址传递
void mySwap02(int *a, int *b) {
    int tem = *a;
    *a = *b;
    *b = tem;
}
 
//3、引用传递
void mySwap03(int &a, int &b) {
    int tem = a;
    a = b;
    b = tem;
}
 
int main() {
    int a = 10;
    int b = 20;
//    mySwap01(a, b); //值传递,形参不能修饰,实参
//    mySwap02(&a, &b); //地址传递,形参可以修饰,实参
    mySwap03(a,b);
    cout << "a=" << a << endl;
    cout << "b=" << b << endl;
 
    return 0;
}
 
 
a=20
b=10

四、引用做函数返回值

作用: 引用是可以作为函数的返回值存在的;

注意:不要返回局部变量引用;

用法: 函数调用作为左值。

#include <iostream>
 
using namespace std;
 
//引用做函数的返回值
//1、不要返回局部变量的引用
int &test01() {
    int a = 10;
    return a;
}
 
//2、函数的调用可以作为左值
int &test02() {
    static int a = 10;//静态变量,存放在全局区,全局区上的数据在程序结束后系统释放
    return a;
}
 
int main() {
    int &ref = test01();
//    cout << ref << endl; //编译器优化
//    cout << ref << endl; //发生错误
    int &ref2 = test02();
    cout << ref2 << endl;
    cout << ref2 << endl;
//    函数的调用可以作为左值
    test02() = 1000;
    cout << ref2 << endl;
    cout << ref2 << endl;
    return 0;
}
 
 
10
10
1000
1000

五、引用的本质

本质:引用的本质在c++内部实现是一个指针常量

#include <iostream>
 
using namespace std;
 
//编译器自动转换为int *  const ref=&a;
void func(int &ref) {
    ref = 100;//ref是引用,转换为*ref=100
}
 
 
int main() {
    int a = 10;
//    自动转换为int* const=ref=&a;指针常量指向不可改,可以修改值
    int &ref = a;
    ref = 20;//编译器自动转换 *ref=20;
    cout<<"a="<<a<<endl;
    cout<<"ref="<<ref<<endl;
    func(a);
    cout<<"a="<<a<<endl;
    cout<<"ref="<<ref<<endl;
    return 0;
}
 
 
a=20
ref=20
a=100
ref=100

六、常量的引用

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

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

#include <iostream>
 
using namespace std;
 
//打印数据 const防止修改
void showVaule(const int &val) {
    cout << val << endl;
}
 
int main() {
//    常量引用
// 使用场景:用来修饰形参,防止误操作
    int a = 10;
//加上const后,编译器将代码修改 int tem=p10; const int & ref=temp;
//    const int &ref = 10;
//    ref=20;
    int b = 20;
    showVaule(b);
    cout << b << endl;
    return 0;
}
 
 



相关文章
|
8月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
109 1
|
9月前
|
C++
C++中的const指针与const引用
C++中的const指针与const引用
135 2
|
7月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
47 3
|
7月前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
8月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
81 5
|
8月前
|
存储 安全 编译器
【C++入门】—— C++入门 (中)_引用
【C++入门】—— C++入门 (中)_引用
46 5
|
8月前
|
C语言 C++ 编译器
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
|
8月前
|
安全 测试技术 C++
C++中的引用
C++中的引用
43 1
|
8月前
|
存储 安全 编译器
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
64 2