学习C++引用

文章介绍了C++中的引用概念,包括其基本使用,如作为变量别名和函数参数,强调了引用必须初始化且不可改变。此外,讨论了引用作为函数返回值的注意事项,特别是不能返回局部变量的引用。还解释了引用的本质是指针常量,并介绍了常量引用来防止形参被误修改。
摘要由CSDN通过智能技术生成

 1.1 引用的基本使用

作用:给变量起别名

语法:数据类型  &别名=原名

注意事项:1、引用必须初始化  2、引用初始化后不可以改变

int main()
{
    int a=10;
    int &b=a;
    //int &b;错误写法
    cout <<"a = "<<a<<endl;
    cout <<"b = "<<b<<endl;

    b = 100;

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

    return 0;

}

输出结果

a = 10 

b = 10

a = 100

b = 100


1.2  引用做函数参数

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

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

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

    mySwap(10,20);
    cout<<"a:= "<<a<<"b:= "<<b<<endl;

    return 0;
}

1.3 引用做函数的返回值

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

int& test01()//用引用的方式去接收a,a的返回类型为"int&"
{
    int a=10;//局部变量存放在四区中的栈区
    return a;
}
//2、函数的调用可以作为左值
int& test02()
{    
    static int a = 10;// 静态变量,存放在全局区,全局区的数据在程序结束后系统释放
    return a;
}

     可以理解为 ref2相当于test02()的一个别名 ,二者指向同一块内存

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

    cout<< "ref = "<<ref<<endl;//第一次结果正确,因为编译器作了保留
    cout<< "ref = "<<ref<<endl;//第二次结果错误,因为a的值已经释放
    
    int& ref2 = test02();
    cout<< "ref2 = "<<ref2<<endl;
    cout<< "ref2 = "<<ref2<<endl;
      
    test02()=1000;//

    cout<< "ref2 = "<<ref2<<endl;
    cout<< "ref2 = "<<ref2<<endl;
 


    system("pause");    
    return 0;

}

 1.4 引用的本质

本质:引用的本质在C++中是一个指针常量(指针的指向不可以修改,指针指向的值可以修改)

 

//发现是引用,转化为int* const ref = &a;
void func(int& ref)
{
    ref = 100;//ref是引用,转化为*ref =100
}
int main()
{
    int& a =10;
    

    int& ref =a;
    ref =20;//内部发现ref是引用,自动帮我们转换为:*ref=20


    cout<<"a: "<<a<<endl;
    cout<<"ref: "<<ref<<endl;
    
    func(a);

    return 0;
}

1.5 常量引用

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

void showValue(const int &val)
{
    val =1000;//错误
    cout<<"val = "<<val;
}
int main()
{
    //int &ref = 10;//引用必须是一块合法内存
    const int &ref =10;//--->int temp =10; const int &ref =temp;

    int a = 100;
    showValue(a);//给a取一个别名叫val

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值