C++核心编程 2 引用

2021/8/6 12:36:09

本文主要是介绍C++核心编程 2 引用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

引用的基本使用

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

注意:引用必须初始化,且初始化之后,就不可更改、

 

引用做函数参数

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

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

实例:

#include<iostream>
using namespace std;

//交换函数

//1、值传递
void Swap1(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;
    //cout << "Swap1 a=" << a << "  " << "Swap1 b=" << b << endl;  //值传递
}

//2、地址传递
void Swap2(int * a, int * b)
{
    int temp =  *a;
     * a =  * b;
     * b =  temp;
     //cout << "Swap2 a=" << *a << "  " << "Swap2 b=" << *b << endl;  //地址传递
}

//3、引用传递
void Swap3(int &a , int &b)
{
    int temp = a;
    a = b;
    b = temp;
    cout << "Swap3 a=" << a << "  " << "Swap3 b=" << b << endl;  //引用传递
}

int main()
{
    int a = 10;
    int b = 20;

    //Swap1(a, b);  //值传递,形参不会修饰实参 
    //cout << "a=" << a << "  " << "b=" << b << endl;   //值传递打印:a=10,b=20

    //Swap2(&a, &b);  //地址传递,形参会修饰实参
    //cout << "a=" << a << "  " << "b=" << b << endl;  //地址传递打印:a=20,b=10

    Swap3(a, b);     //引用传递,形参会修饰实参
    cout << "a=" << a << "  " << "b=" << b << endl;  //引用传递打印:a=20,b=10

    system("pause");
    return 0;
}

总结:通过引用参数产生的效果同地址传递是一样的,引用的语法更清晰简单

 

引用做函数返回值

作用:引用是可以作为函数的返回值存在的。用法:函数调用作为左值

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

实例:

#include<iostream>
using namespace std;

//引用做函数的返回值
//1、不要返回局部变量的引用
int& test1()
{
    int a = 10;   //局部变量存放在四区中的 栈区
    return a;
}

//2、函数的调用可以作为左值
int& test2()
{
    static int a = 10;  //加上关键字static ,局部变量a就变成了静态变量;静态变量存放在全局区,全局区的数据在程序结束后由系统释放
    return a;
}

int main()
{
    //int &ref = test1();

    //cout << "ref=" << ref << endl;   //第一次结果正确,是因为编译器做了一次保留
    //cout << "ref=" << ref << endl;   //第二次结果错误,是因为 栈区 中存放的 局部变量 a 的内存已经被释放

    int& ref = test2();

    cout << "ref=" << ref << endl;   //ref=10
    cout << "ref=" << ref << endl;   //ref=10
    
    test2() = 1000;     //如果函数的返回值是引用,函数的调用可以作为左值

    cout << "ref=" << ref << endl;   //ref=1000
    cout << "ref=" << ref << endl;   //ref=1000

    system("pause");
    return 0;
}

 

引用的本质:

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

实例:

 

 结论:C++推荐使用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了

 

常量引用:

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

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

实例:

#include<iostream>
using namespace std;

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

void ShowVal(const int &val)
{
    //val = 1000;
    cout << "val=" << val << endl;
}

int main()
{
    //int a = 10;
    //int& ref = 10;   //引用必须引一块合法的内存空间
    const int & ref = 10;   //加上const后 编译器将代码修改 int temp = 10; int & ref = temp;
    //ref = 20;   //加入const之后 变为只读,不可修改
    
    int a = 100;
    ShowVal(a);
    cout << "a=" << a << endl;

    system("pause");
    return 0;
}

 



这篇关于C++核心编程 2 引用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程