C++的引用

简介: C++的引用

语法格式

int b = 0;  //定义b变量
 
int& a = b;  //给b变量取别名, 别名为a

引用相当于给变量取别名,上述代码中的a也指向b空间。

引用的特性

1,引用的对象可以不初始化,但引用必须初始化。换言之,创建引用的变量必须有其唯一指向的实体。

2,引用唯一实体后不可改变其指向,如果a是b的别名,a就不能是其他变量的别名。

引用和指针的区别

空间 初始化 指向 运算 安全性 其他
指针 开空间 非必要 可更改指向 会作用于被引用的实体 不安全 无多级引用
引用 不开空间 必须初始化 不可更改指向 会移动一个类型 相对安全 有多级指针
int& Test() 
{
 
  int a = 0;
  return a;
 
}
 
int main()
{
  int ret = Test(); 
  
  return 0;
}


引用做返回值

这样写是不安全的,a的生命周期只在Test函数的作用域里,出了作用域a可能会被其他数据覆盖。引用返回的不是a的值,而是a所指向空间的数据,但a可能会被其他数据覆盖,返回的不一定是0,所以说这样写是不安全的。

解决方案:把返回值改成静态变量。

相关文章
|
1月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
26 1
|
2月前
|
C++
C++中的const指针与const引用
C++中的const指针与const引用
39 2
|
4天前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
20天前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
37 5
|
19天前
|
C++
C++引用
C++引用
9 1
|
1月前
|
存储 安全 编译器
【C++入门】—— C++入门 (中)_引用
【C++入门】—— C++入门 (中)_引用
23 5
|
28天前
|
C++
C++的引用定义语法和应用
C++的引用定义语法和应用
|
1月前
|
C语言 C++ 编译器
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
【C++语言】冲突-C语言:输入输出、缺省参数、引用、内联函数
|
12天前
|
C++
C++基础知识(二:引用和new delete)
引用是C++中的一种复合类型,它是某个已存在变量的别名,也就是说引用不是独立的实体,它只是为已存在的变量取了一个新名字。一旦引用被初始化为某个变量,就不能改变引用到另一个变量。引用的主要用途包括函数参数传递、操作符重载等,它可以避免复制大对象的开销,并且使得代码更加直观易读。
|
13天前
|
存储 自然语言处理 编译器