从C到C++

1、引用 reference

1、引用的概念

  • 引用就是变量的别名,对引用操作与变量本身操作是完全一样的
  • 引用的本质也是通过指针来实现的,但是在使用过程中弱化了内存地址这一概念,因此除了C++以外的面向对象编程语言都保留了引用,哪怕编程语言剔除了指针这一概念

2、创建一个引用

  • 创建一个引用的代码
#include<iostream>        //标准输入输出流的头文件

using namespace std;       //使用std命名空间

int main()
{
    int a=100;
    
    //b时a的引用
    int& b=a;
    
    //对b进行操作和对a进行操作完全一样
    cout<<&a<<" "<<&b<<endl;            // 0x61fe88 0x61fe88
    cout<<a<<" "<<b<<endl;               // 100 100
    
    return 0;
}
  • 运行结果

 3、引用的性质

1、性质一:可以改变引用变量的值,但是不能再次成为其他变量的引用

1、可以改变引用变量的值
  • 代码
#include<iostream>


using namespace std;


int main()
{
    int a=100;
    int b=200;


    //创建引用:c是a的引用
    int& c=a;


    //改变引用变量的值
    c=b;        //正确操作,把c和a的值改为200


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


    return 0;
}
  • 运行结果

 2、已经定义的引用不能再次成为其他变量的引用
  • 代码
#include<iostream>

using namespace std;

int main()
{
    int a=100;
    int b=200;


    //创建引用:c是a的引用
    int& c=a;


    //已经定义的引用不能再次成为其它变量的引用
    int& c=b;        //错误
    &c=b;            //错误
    
    return 0;
}
  • 运行结果

 2、性质二:声明引用时必须同时对其进行初始化

1、错误:声明引用,未进行初始化
  • 代码
#include<iostream>

using namespace std;

int main()
{


    //(错误)声明一个引用,不进行初始化
    int& c;     //错误


    return 0;
}
  • 运行结果

 2、正确:声明引用的同时必须进行初始化
  • 代码
#include<iostream>

using namespace std;

int main()
{
    int a=100;

    //声明一个引用,并且进行初始化
    int& c=a;     //正确

    cout<<"a="<<c<<endl;

    return 0;
}
  • 运行结果

 3、性质三:声明引用初始化时,初始化的值不能为NULL

·1、错误:引用初始化为NULL的情况
  • 代码
#include<iostream>

using namespace std;

int main()
{
    //错误示范:将定义的引用初始化为NULL
    int& c=NULL;     //错误

    return 0;
}
  • 运行结果

 4、性质四:声明引用时,初始化的值可以是纯数字,但是这种情况下必须声明为常引用,使用const关键字修饰引用,表示引用的值不可变。

  • const修饰:只能读,不能写
1、错误:初始化为纯数字,不声明常引用的情况
  • 代码
#include<iostream>

using namespace std;

int main()
{
    //错误示范:初始化为一个纯数字,但是不声明为常量的情况
    int& c=123;     //错误

    return 0;
}
  • 运行结果

 2、正确:定义的引用的初始化为纯数字时,必须声明为常引用,使用const关键字修饰引用,表示引用的值不可变。
  • 代码
#include<iostream>

using namespace std;

int main()
{
    //正确示范:初始化为一个纯数字,引用声明为常量的情况
    //int& c=123;     //错误

    const int& c=123;       //正确

    cout<<"c="<<c<<endl;

    return 0;
}
  • 运行结果

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值