C++引用

C++引用

引用变量是一个别名,它是某个已存在变量的另一个名字。
把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
引用必须在定义时初始化,并且一旦绑定到一个变量后,就不能再绑定到其他变量。

int a=10;
int &ref=a; //ref是a的引用,对ref的操作会直接作用于a

C++引用 vs 指针

不同点

  • 不存在空引用,引用必须连接到一块合法的内存

  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象

  • 引用必须在创建时被初始化/指针可以在任何时间被初始化

  • 引用的对象必须是一个变量,而指针必须是一个地址

特性 引用 指针
定义与初始化 必须初始化,且不能为null 可以不初始化,可以在后续代码中指向其他对象,可以为null
语法 使用&声明 使用*声明
重新绑定 不能重新绑定,一旦初始化后始终引用同一个对象 可以重新指向其他对象
空值(Nullability) 不能为null,必须绑定到有效的对象 可以为null,表示不指向任何对象
内存占用 不占用额外内存(编译器通常将其优化为直接操作所引用的对象) 占用额外内存(存储地址,通常是一个机器字长,如4字节或8字节)
访问方式 直接访问,无需解引用操作符,例如:ref=10; 需要使用*解引用操作符访问或修改所指向的对象,例如:*ptr=10
多级间接访问 不支持多级间接访问(不能有引用的引用) 支持多层间接访问(如指针的指针:int **pptr;)
函数参数传递 常用于函数参数传递,语法简洁 也可用于函数参数传递,但需要使用解引用操作符
数组与引用 不能直接创建引用数组,但可以创建数组的引用,例如:int (&ref)[10]=arr; 可以创建指针数组,也可以创建指向数组的指针,例如:int *ptrArr[10];
安全性 更安全,不能为null,且语法直观 更灵活,但容易出错(如空指针、野指针等)
底层实现 通常通过指针实现,但编译器会优化为直接操作所引用的对象 直接存储目标对象的内存地址

C++中创建引用

变量名称是变量附属在内存位置中的标签,引用是变量附属在内存位置中的第二个标签。
可以通过原始变量名称或引用来访问变量的内容。

引用通常用于函数参数列表和函数返回值

概念 描述
把引用作为参数 C++支持把引用作为参数传给函数,这比一般的参数更安全
把引用作为返回值 可以从C++函数中返回引用,就像返回其他数据类型一样
posted @ 2025-07-11 17:16  渝州炒鸡舞帝神兽大王  阅读(11)  评论(0)    收藏  举报