C++引用符&的使用(部分来源于网络)

写在前面,引用的特点:

1、一个变量可取多个别名。

2、引用必须初始化。

3、引用只能在初始化的时候引用一次 ,不能更改为转而引用其他变量。

定义一个变量的引用语法:

类型名 &引用名=某变量名

例如:int n=4;

int &m=n;

一、基础引用(取别名)

void demo1()
{
    int n=7;
    int &r=n;
    r=4;
    printf("n=%d r=%d\n",n,r);
    printf("n的地址=%p r的地址=%p\n",&n,&r);
    n=5;
    printf("n=%d r=%d",n,r);
}

 

void demo2()
{
    int a=4,b=5;
    int &r1=a;
    int &r2=r1;
    r2=10;
    printf("a=%d r1=%d r2=%d\n",a,r1,r2);
    r1=b;
    printf("a=%d r1=%d r2=%d\n",a,r1,r2);
}

 

二、const引用

void demo3()
{
     int d1 = 4;
     const int & d2 = d1;
     d1 = 5;
     printf("d1=%d d2=%d\n",d1,d2);
     //d1改变,d2的值也会改变,不能给常量(不能被修改的量)赋值。
     //d2不能重新赋值
     const int d3 = 1;
     const int & d4 = d3;
     //int &d5 = d3;无法引用
     const int & d6 = 5;//常量具有常性,只有常引用可以引用常量
     printf("d1=%d d2=%d d3=%d d4=%d d6=%d\n",d1,d2,d3,d4,d6);
     double d7 = 1.1;
     //int& d8 = d7;
     /*d7是double类型,d8是int,
      d7赋值给d8时要生成一个临时变量,
     也就是说d8引用的是这个带有常性的临时变量,所以不能赋值。*/
}

 

三、引用做参数

1.【值传递】如果形参为非引用的传值方式,则生成局部临时变量接收实参的值
void Swap (int a, int b)
{
     int temp = a;
     a = b ;
     b = temp ;
}
/*值传递的方式无法实现交换,因为传参时对于参数a和b拷贝一临时副本,交换的是副本值,因为其是临时变量函数退出,变量销毁,并不会影响外部a和b的值。*/
 
2.【引用传递】如果形参为引用类型,则形参是实参的别名。
void Swap (int& a, int& b)
{
     int temp = a;
     b = a ;
     a = temp ;
}
/*使用引用的话,不做临时拷贝,&的使用说明此处只是原参数的另一个名字而已,所以修改时直接在原参数的基础上修改变量值,减少了复制的开销,加快程序执行效率。*/
 
3.【指针传递】传入的说参数的地址
void Swap (int* pa, int* pb)
{
     int temp = *pa;
     *pa = *pb;
     *pb = temp;
}
/*传入的是地址,因为地址是唯一的,所以指针通过地址的访问进而可修改其内容。*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goodlunatic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值