C++入门(一) : C++引用的简单理解

本文详细介绍了C++中的引用,包括它的定义、优点和注意事项。引用作为变量的别名,用于高效传递函数参数,提高代码可读性。文章还展示了引用在数组和指针操作中的应用,并强调了不能返回局部变量或动态内存分配的引用以避免问题。引用的底层实现类似指针常量,但使用上更为安全。

一、什么是引用

引用,顾名思义是某一个变量或对象的别名,引用的类型必须和其所绑定的变量的类型相同,对引用的操作与对其所绑定的变量或对象的操作完全等价。

引用的优点:

  1. 在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。
  2. 用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。
  3. 在程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

 二、引用的注意事项

  1. 引用定义时必须初始化,与某对象进行绑定,否则会编译报错
  2. 不能将已初始化的引用作为其他变量或对象的名字或别名
  3. 引用的底层实现是指针常量,所以在内存中占4或8字节个字节
  4. 凡是使用了引用变量的代码,都可以转换成使用指针常量的对应形式的代码,只不过书写形式上要繁琐一些。反过来,由于编译器对引用变量使用方式上的限制,使用指针常量能够实现的功能,却不一定能够用引用来实现
  5.  不能返回局部变量的引用。原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,其值也可能会变成随机值。
  6. 不能返回函数内部new分配的内存的引用,主要因为引用仅仅是变量的别名,是无法对目标变量进行free操作的,这样,将导致在函数体内分配的内存,无法释放,从而导致内存泄漏!

三、引用实际应用

1、数组的引用

语法:类型 (&引用名)[数组中元素数量]=数组名;

#include<iostream>
using namespace std;
int main(){
    int a[3]={1,2,3};
    int (&b)[3]=a;//对数组的引用
    cout<<&a[0]<<" "<<&b[0]<<endl;
    cout<<&a[1]<<" "<<&b[1]<<endl;
    cout<<&a[2]<<" "<<&b[2]<<endl;
    return 0;
}

2、指针的引用

语法:类型 *&引用名=指针名;

#include<iostream>
using namespace std;
int main(){
    int a=10;
    int *ptr=&a;
    int *&new_ptr=ptr;
    cout<<&ptr<<" "<<&new_ptr<<endl;
    return 0;
}

3、数组的引用作为函数的参数

C++的数组类型是带有长度信息的,数组的引用作为函数的参数时必须指定数组的长度

#include<iostream>
using namespace std;
void func(int(&a)[5]){//数组引用作为函数的参数,必须指明数组的长度
//函数体
}
int main(){
    int number[5]={0,1,2,3,4};
    func(number);
    return 0;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chiang木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值