您的位置:首页 > 编程语言 > C语言/C++

C++基础:引用

2016-07-17 19:49 302 查看
函数中参数的传递方式:

传值:在函数域中为参数重新分配内存,而把实参的数值传递到新分配的内存中。

    优点:不会改变实参的值;

引用:引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名,也就是C++系统不为引用类型变量     分配内存空间。引用主要用于函数之间的数据传递。

    优点:如果实参是一个复杂的对象,重新分配内存会引起程序执行效率大大下降,而引用只传递地址,不会分配内存。

注意:

1.对数组只能引用数组元素,不能引用数组(数组名本身为地址)。

2.不能定义引用的引用(引用也是地址),所以当函数的参数为引用时,引用不能作实参。

3.const引用:引用在内部存放的是被引用对象的地址,不可寻址的值是不能引用的;

当引用作为形参时,实参也不能使用不可寻址的值,更不可能进行类型转换(如:实数转换为整数)。

但是const引用不同,它是只读的,为了绝对保证不会发生误改,编译器实现const引用时,生成一个临时对象,

引用实际上指向该临时对象,但用户不能访问它。所以const引用可以实现不可寻址的值(包括字面常量)的引用,

例如:

const double dval=1024; const int &ri=dval;

是正确的,编译器将其转换为:

const double dval=1024; int temp=dval; const int &ri=temp;

因有临时对象,引用和类型转换都实现了。当const引用作为形参时,实参也能使用不可寻址的值,并能进行类型转换

注意:只能对已有空间进行引用;
int a = 10;

int &b = a;   //对变量引用

  

int *p = &a;

int *&q = p;  //对指针引用

int ar[10] = {1,2,3,4,5,6,7,8,9,10};
int (&br)[10] = ar;       //对数组引用

const int x = 100;
const int &y = x;       //常量只能用常引用

int n = 20;
const int &m = n;       //用m不能改变n

const double d = 12.34;

const int &f = d;        //引用了中间的临时变量

注意:中间变量一般具有常量的性质,不可改变;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: