c++引用

引用变量是c++新增的一种复合类型,是已定义变量的别名。

一,创建引用变量

  1. c和c++使用&符号来指示变量的地址,c++给&符号赋予了另一个含义,将其用来声明引用。
#include <iostream>

using namespace std;

int main()
{
    int val = 100;
    int &ref = val;				//声明引用,指向int变量的引用。
    cout << "val = " << val;
    cout << ", ref = " << ref << endl;
    
    ref++;
    cout << "val = " << val;
    cout << ", ref = " << ref << endl;

    cout << "val address = " << &val;
    cout << ", ref address = " << &ref << endl;
    return 0;
}

运行结果:从中可知,val和ref的值和地址都相同,都是指同一块内存,ref++操作将一个有两个名称的变量加1

val = 100, ref = 100
val = 101, ref = 101
val address = 0x7ffecb512cf4, ref address = 0x7ffecb512cf4

  1. 必须在声明引用变量时进行初始化
 int val = 100;
 int &ref;  //error: ‘ref’ declared as reference but not initialized
 ef = val;

二,将引用用作函数参数

引用经常被用作函数参数,使得函数中的变量名成为调用程序中的变量的别名,这种传递参数的方法为按引用传递,按引用传递允许被调用的函数能够访问调用函数中的变量。

#include <iostream>

using namespace std;

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

int main()
{
    int x = 10;
    int y = 20;
    cout << "x = " << x << "   " << "y = " << y << endl;

    swap(x, y);
    cout << "x = " << x << "   " << "y = " << y << endl;
    return 0;
}

运行结果:x和y的值相互交换。

x = 10   y = 20
x = 20   y = 10

函数调用使用实参初始化形参,因此函数的引用参数被初始化为函数调用函数传递的实参。

三,何时使用引用参数

这只是一些指导原则,很可能有充分的理由做出其他的选择。

  • 对于使用传递的值而不作修改的函数
    • 如果数据对象很小,如内置数据类型或小型结构,则按值传递。
    • 如果数据对象是数组,则使用指针,并将指针声明为指向const的指针。
    • 如果数据对象是较大的结构,则使用const指针或const引用,以提高程序的效率,这样可以节省复制结构所需的时间和空间。
    • 如果数据对象是类对象,则使用const引用,传递类对象参数的标准方式是按引用传递。
  • 对于修改调用函数中数据的函数。
    • 如果数据对象是内置数据类型,则使用指针。
    • 如果数据对象是数组,则只能使用指针。
    • 如果数据对象是结构,则使用引用和指针。
    • 如果数据对象是类对象,则使用引用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值