C++基础:引用

函数中参数的传递方式:


传值:在函数域中为参数重新分配内存,而把实参的数值传递到新分配的内存中。
    优点:不会改变实参的值;

引用:引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名,也就是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;        //引用了中间的临时变量


注意:中间变量一般具有常量的性质,不可改变;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值