湛蓝之海 发表于 2021-12-13 17:57:27

C++中引用在函数中的使用

引用做函数参数

[*]作用:做函数参数时,可以利用引用让形式参数修饰实参
[*]优点:可以简化指针修改实参
[*]代码示例:
//值传递传递
void swap01(int a, int b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

//地址传递
void swap02(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

//引用做函数参数;
void swap03(int &a,int &b)
{
    int temp;
    temp = a;
    a = b;
    b = temp;
}

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

    //swap01(a,b); 值传递,形参不会修饰实参
   
    //swap02(&a, &b); 地址传递,形参可以修饰实参
   
    swap03(a, b);//引用做函数参数,形参会修饰实参
    cout << "swap02 a= " << a << endl;
    cout << "swap02 b= " << b << endl;
    system("pause");

}引用做函数返回值

[*]注意:不要返回局部变量引用
[*]用法:函数调用作为左值
代码示例://不能返回局部变量局部变量由系统管理释放
//引用做函数返回值,函数调用作左值
int& test01()
{
    int a = 10;//局部变量存放在栈区
    return a;
}

int& test02()
{
    static int a = 10; //static 静态变量存放在四区中的 全局区
    return a;
}

int main()
{
    //int &a = test01();
    //cout << "a= " << a << endl;//第一次输出 系统做保留
    //cout << "a= " << a << endl;//第二次输出错误因为系统将内存释放

    int& ref = test02();
    cout << "test02ref=" << ref << endl; //ref = 10
    cout << "test02ref=" << ref << endl;
   
    test02() = 100;
   
    cout << "test02ref=" << ref << endl; //ref = 100
    cout << "test02ref=" << ref << endl;
   
    system("pause");
    return 0;
}
引用的注意事项

[*]引用必须初始化   (不能取无效地址)
[*]引用在初始化后,不可以改变。(一个别名不可以在作为其他的别名)
总结参考自​​https://www.bilibili.com/video/BV1et411b73Z?p=90​​


https://blog.51cto.com/u_15172160/4795812
页: [1]
查看完整版本: C++中引用在函数中的使用