0
点赞
收藏
分享

微信扫一扫

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

小云晓云 2022-03-11 阅读 50

写在前面,引用的特点:

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 条评论