C++中颇为厉害的引用

11 篇文章 1 订阅
本文探讨了引用在编程中的关键概念,包括初始化、别名原则、临时变量引用的运用。重点讲解了引用在函数参数传递和返回值中的妙用,并对比了引用与指针的区别。通过实例和理论结合,帮助读者掌握引用的正确使用和优势。
摘要由CSDN通过智能技术生成

目录

一、引用的概念

二、引用的特性:

1、引用在定义时必须初始化

2、 一个变量可以有多个引用

3、引用一旦引用一个实体,再不能引用其他实体

4、取别名原则:对原引用变量,权限只能缩小 不能放大。

5、临时变量的引用

三、引用的妙用 

 1、函数参数中替代指针

2、做返回值

四、引用与指针的不同点

1、引用是变量的别名,指针存储的是变量的地址。

2、引用必须初始化,指针不用。

3、引用在初始化引用一个变量后就不能改变,而指针可以。

4、用sizeof来判断他们俩的大小,引用是所引用类型的大小,指针是地址空间的所占个数(32位平台下占4个字节)。

5、引用的变量加一就是变量自增一,指针加一是跳过一个所指向类型的一个类型的大小。

6、引用比指针使用起来更加危险(指针不严谨使用,有越界,非法访问等危险)。


一、引用的概念

通俗的讲:引用就是一个变量的别名

阿狗 在家被叫狗蛋,在外被叫张苟一。

阿狗就是变量的名字,狗蛋和张苟一就是引用。

用代码去解释:

类型& 引用变量名(对象名) = 引用实体
 


int main()
{
	int a = 0;
	int& b = a;

	return 0;
}

b 就是 a 的别名,b是引用。

所以

b的地址和a的地址是一样的,因为他们就是同一个变量。

二、引用的特性:

1、引用在定义时必须初始化

❌ 

 ✔

2、 一个变量可以有多个引用

int a=0;
int &b=a;
int &c=a;
int &d=a;

3、引用一旦引用一个实体,再不能引用其他实体

张苟一叫的就是阿狗,他不能在改变。不能变成在叫  张苟一  的时候,铁牛回应了。

4、取别名原则:对原引用变量,权限只能缩小 不能放大。

意思是 阿狗是老师,狗蛋是他的引用变量,在叫他别名时不能叫他狗蛋教授

	const int c = 1;
    //错误
	int& d = c;//放大
    //正确
    const int &d =c ;//不变
    
    int a = 0;
    int &e = a;//缩小


    

5、临时变量的引用

临时变量是什么东西?
 

double f = 3.12;
int g = f;

怎么把f中的数放到g中?
这是我们要引入临时变量的概念。

临时变量的特性

记住:临时变量具有常性

从而:

             

为什么图一的引用不行,图二可以。

结合临时变量的概念

这时,e引用的是f的临时变量

结合临时变量的特性,临时变量具有常性

所以要用const。

那不用为什么不行,因为不用的话,就违反了引用的特性,引用只能缩小范围,不能扩大。

临时变量具有常性,引用之后必然前面要加const,不然就是扩大引用的范围了,让它从不可修改变为可修改类型。

注意!

这时e就不是f的别名了!

它是这个临时变量的别名!

三、引用的妙用 

 1、函数参数中替代指针

我们平常要写个简单的swap函数

void swap(int* a, int* b)
{
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

我们可以用引用来代替指针

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

这样可以

①、减少拷贝,提升效率

②、引用传参更好理解,更一目了然。

2、做返回值

int &cout()
{
   static int n=0;
   n++;


   return n;
}

四、引用与指针的不同点

1、引用是变量的别名,指针存储的是变量的地址。

2、引用必须初始化,指针不用。

3、引用在初始化引用一个变量后就不能改变,而指针可以。

4、用sizeof来判断他们俩的大小,引用是所引用类型的大小,指针是地址空间的所占个数(32位平台下占4个字节)。

5、引用的变量加一就是变量自增一,指针加一是跳过一个所指向类型的一个类型的大小。

6、引用比指针使用起来更加危险(指针不严谨使用,有越界,非法访问等危险)。

限于篇幅,一些知识点未讲到,也许一些知识点也有错误,但总之感谢观看,希望能给你提供帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值