~引用及与指针的区别/联系~

本文详细介绍了C++中引用的概念,包括普通引用与const引用的区别、如何通过引用进行参数传递及函数返回,以及引用与指针之间的区别与联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 引用
  引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。(引用变量与已定义的变量地址相同(无论值是否被修改))
  格式:类型 &引用变量名 = 已定义变量名;
  特点:1)一个变量可取多个别名。
        2)引用必须初始化。
        3)引用只能在初始化时引用一次,不能改变为再引用其他的变量。

2. const引用(常引用)
  格式:const 类型 &引用变量名 = 已定义变量名;
  特点:1)修改已定义变量名的值,则引用变量名的值也会改变。
        2)不能给引用变量名赋值(不能给常量赋值)。
        3)常量具有常性,只有常引用可以引用常量。(const &d = 6)
        4)不同类型间不可直接引用(报错:无法用“类型名”类型的值初始化“类型名 &”类型的引用(非常量限定)),应在前以const修饰。

3. 传参方式
  1)[值传递]    若形参为非引用的传值方式,则生成局部临时变量接受实参的值。(若要改变实参的值,则该操作无效)
     void Swap(int left, int right)
     {
         int temp = left;
         left = right;
         right = temp;
     }  //无法交换left、right的值
  2)[引用传递]  若形参为引用类型,则形参是实参的别名。
                 当不希望函数内改变参数的值时,尽量使用常引用传参。
     void Swap(int &left, int &right)
     {
         int temp = left;
         left = right;
         right = temp;
     }  //可交换left、right的值
  3)[指针传递]
     void Swap(int *left, int *right)
     {
         int temp = *left;
         *left = *right;
         *right = temp;
     }

4. 返回值
  1)传值作返回值
     int Add(int num1, int num2)
     {
         int ret = num1 + num2;
         return ret;
     }
  2)传引用作返回值
     int& Add(int num1, int num2)
     {
         int ret = num1 + num2;
         return ret;
     }   //警告:返回局部变量或临时变量的地址
  3)传指针作返回值
     int* Add(int* num, int n)
     {
         int *a;
         for(int i=0; i<n; i++)
         {
             a[i] = num[i];
         }
         return a;
     }
  注意:不要返回一个临时变量的引用。
              若返回对象出了当前函数的作用域依旧存在,则最好使用引用返回,因为这样更高效。

5. 引用与指针的区别与联系
  1)引用只能在定义时初始化1次,之后不能改变指向其他变量(即从一而终);指针变量的值可变。
  2)引用必须指向有用的变量;指针可以为空。
  3)sizeof(指针对象)与sizeof(引用对象)的意义不一样。sizeof(指针对象)得到的是对象地址的大小,sizeof(引用对象)得到的是所指变量的大小。
  4)指针和引用自增(++)/自减(--)的意义不一样。指针自增(++)/自减(--)的是对象地址的大小,引用自增(++)/自减(--)的是所指变量的大小。
  5)相对而言,引用比指针更安全。
  注意:指针比引用更灵活,但也更危险。
              使用指针时一定要注意检查指针是否为空。指针所指的地址释放后最好置NULL,否则可能存在野指针问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值