【C++基础概念——引用的基本概念以及和指针的区别】

引用的基本概念

引用(Reference)是C++中的一种数据类型,它为一个已经存在的变量创建一个别名。引用在C++中非常有用,因为它允许你直接操作原始变量,而不是它的副本。引用的语法使用&符号。

关键点理解:

  • 是C++中的一种数据类型,
  • 必须初始化:它是为一个已经存在的变量创建一个别名。并且不能改变用的对象。
  • 引用的语法使用&符号。
  • 允许你直接操作原始变量,而不是它的副本,也就是说操作的就是原对象。提高效率和保持对象状态一致性。
  • 无需解引用:这是与指针的区别,不需要解引用操作符*。

代码示例

#include <iostream>

int main() {
    int a = 10;
    int& ref = a; // ref是a的引用,操作ref就是操作变量a,声明ref,并初始化。
    int b = a; //b只是普通的int数据类型,b是a的一个副本,有不同的地址。存在不同的位置,修改a,不会影响变量b

    std::cout << "a: " << a << std::endl; // 输出10
    std::cout << "ref: " << ref << std::endl; // 输出10
    std::cout << "b: " << b << std::endl; // 输出10

    ref = 20; // 修改ref实际上是修改a
    std::cout << "a: " << a << std::endl; // 输出20
    std::cout << "ref: " << ref << std::endl; // 输出20,因为修改a就是修改ref,而且输出ref不需要,用* 解引用
    std::cout << "b: " << b << std::endl; // 输出10,因为修改a并不影响变量b

    return 0;
}

与指针的区别

引用(Reference)和指针(Pointer)是C++中两种不同的概念,它们都用于间接访问对象。

  1. 声明和初始化

    • 引用:在声明时必须初始化,并且不能改变引用的对象。且不能为null,一旦绑定,不能改变
    int a = 10;
    int& ref = a; // 必须在声明时初始化
    
    • 指针:可以在声明时不初始化,并且可以在任何时候指向不同的对象。
    int a = 10;
    int* ptr = nullptr; // 可以不初始化
    ptr = &a; // 可以在任何时候指向不同的对象
    
  2. 语法和使用

    • 引用:使用引用时,不需要解引用操作符*。
    int a = 10;
    int& ref = a;
    ref = 20; // 直接使用引用
    
    • 指针:使用指针时,需要使用解引用操作符*。
    int a = 10;
    int* ptr = &a;
    *ptr = 20; // 使用解引用操作符
    
  3. 空值

    • 引用:引用不能为null,必须引用一个有效的对象。
    int& ref = nullptr; // 错误,引用不能为null
    
    • 指针:指针可以为null,表示它不指向任何对象。
    int* ptr = nullptr; // 合法,指针可以为null
    
  4. 重新绑定

    • 引用:一旦绑定到一个对象,就不能再绑定到另一个对象。
    int a = 10;
    int b = 20;
    int& ref = a;
    ref = b; // 这是将b的值赋给a,而不是重新绑定ref
    
    • 指针:可以在任何时候指向不同的对象。
    int a = 10;
    int b = 20;
    int* ptr = &a;
    ptr = &b; // 重新指向b
    
  5. 内存地址

    • 引用:引用本身没有独立的内存地址,它只是被引用对象的别名。
    int a = 10;
    int& ref = a;
    std::cout << &ref << std::endl; // 输出a的地址
    
    • 指针:指针是一个独立的变量,存储的是对象的地址。
    int a = 10;
    int* ptr = &a;
    std::cout << ptr << std::endl; // 输出a的地址
    std::cout << &ptr << std::endl; // 输出ptr的地址
    

总结

引用是C++中的一种数据类型,它为一个已经存在的变量创建一个别名。

  • 引用:必须在声明时初始化,不能为null,一旦绑定不能改变,使用时不需要解引用操作符。
  • 指针:可以在声明时不初始化,可以为null,可以重新指向不同的对象,使用时需要解引用操作符。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值