C++引用

文章介绍了C++中的引用特性,它作为变量的别名,不占用额外内存,且必须初始化。引用常用于函数参数传递,提高效率,避免数据副本。同时,常引用提供了一种安全机制,防止函数内修改原数据。通过示例代码解释了引用的工作原理及其与指针的区别。
摘要由CSDN通过智能技术生成

一、变量的引用:

引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。
引用的声明方法:类型标识符 &引用名=目标变量名;

char ch;
char &rp=ch;

1)引用仅是变量的别名,而不是实实在在地定义了一个变量,因此引用本身并不占用内存,而是和目标变量共同指向目标变量的内存地址.
2)表达式中的取地址符&不再是取变量的地址,而是用来表示该变量是引用类型的变量。
3)定义一个引用时,必须对其初始化。

示例代码:

#include <stdio.h>
#include <iostream>
using  namespace  std;

void fun1(int& i)
{
	i++;
	cout << "i: " << i << " i address: " << &i << endl;
}

int  main(void) {
	int a = 10;
	cout << "a: " << a << " a address: " << &a << endl;
	fun1(a);
}

在这里插入图片描述

int a通过引用的方式传给fun1,可以发现引用和目标变量的地址是一样的,对引用的修改就是对目标变量的修改。

二、引用的作用:

1、引用作为参数

引用的一个重要作用就是作为函数的参数。以前的C语言中函数参数传递是值传递,如果有大块数据作为参数传递的时候,采用的方案往往是指针,因为这样可以避免将整块数据全部压栈,可以提高程序的效率。但是现在(C++中)又增加了一种同样有效率的选择(在某些特殊情况下又是必须的选择),就是引用。
(1)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
 (2)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

2、常引用

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。
  常引用声明方式:const 类型标识符 &引用名 = 目标变量名;
  用这种方式声明的引用,不能通过引用对目标变量的值进行修改,从而使引用的目标成为const,达到了引用的安全性。
  如果将上述代码中fun1中形参改为void fun1(const int& i)那么系统将会报错error C3892: “i”: 不能给常量赋值。这也就保证了数据不在函数中被改变。

https://blog.csdn.net/wulafly/article/details/52244726?spm=1001.2101.3001.6661.1&depth_1-utm_relevant_index=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值