引用

1  什么是引用

一个与指针密切相关的特殊数据类型--引用

*引用是一个变量的别名,定义引用类型变量,实质上是给一个已定义的变量起一个别名,引用类型变量与其相关的变量使用同一个内存空间。

定义引用类型变量的一般格式为:

类型  &引用名=变量名

如:

int    a=3;

int   &ra=a;

3  引用的一些要点

1)引用与指针的不同:

  a.指针是一个变量,可以把它再赋值指向别的地址

  b.而引用一旦初始化,其地址不会再变

2)定义引用时,必须将其初始化。

3)引用数组时,要注意引用方法。

  

例如:

  int   a[10];

  int   &ra=a;//错误:不能建立数组的引用

  //数组是某个数据类型元素的集合,数组名表示该元素集合空间的起始地址,它自己不是一个真正的数据类型,所以这种引用是不对的。

  int   &rae=a[0];//正确:指向数组的元素

下面给出正确引用数组的方法:

#include<iostream>
using namespace std;
int main(){
    int a[5]={1,2,3,4};
    int (&ra)[5]=a;
    cout<<ra[3];
    return 0;
}

这样引用,编译是没有错误的,并且引用数组可以像原来数组那样使用,

想要正确引用数组,要注意以下两点:

    第一个地方是‘&’的位置,它必须要和引用数组的名称用括号括起来。

    第二个地方是必须指定引用数组中的元素个数,且元素的个数必须要和被引用的数组中的元素个数相同。

4、可以引用一个结构体

例如:

struct PERSON{
    int age;
    char name[25];
};
PERSON one;
PERSON &rone=one;

5、引用本身也不是一种数据类型,所以没有引用的引用。

4  引用在函数参数中的引用

1)引用作函数参数

  c++提供引用,主要用途之一是建立函数参数的引用传递。引用说明符&可以在函数里说明引用类型参数,即引用作函数参数

下面的swap函数可以用引用作函数参数:

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

现在如果要交换两个整型变量i和j的值,可用下面的方法调用swap函数:

int a=10,b=20;
swap(a,b);//交换后结果为:a=20,b=20;

通过引用传递,不用指针也能够改变实参的值。

原文地址:https://www.cnblogs.com/fate-/p/12755289.html