简述引用的特点及指针和引用区别

简介: 简述引用的特点及指针和引用区别

一、引用的特点

1.引用本身不占用内存空间,与被引用对象共用内存

2.引用定义时,必须初始化

3.引用的类型必须与被引用对象的类型保持一致 比如:int a; 引用必须使用int&

4.引用只能引用一个对象,一个对象可以被多次引用。

如:int a; int& ra = a; int& rra = a;


二、指针和引用区别

引用本质上也是一个指针,它引用的对象不可改变,但是,内存地址的内容是可以改变,引用本身不占用内存空间

如:

int a = 10;
int& ra = a; //可以说ra就指向了a,不能指向其他已有变量
ra = 20; //将一个值重新赋值给ra所在的内存上

引用本质就是 type* const

指针通常情况下,指向的对象和内存地址都可以改变,但是,该指针也是一个变量,本身也占内存


三、引用的好处

1.提高程序效率

2.节省空间

3.避免指针使用不安全性


四、引用的使用场景

1.引用作为函数的形参

type 变量 const type 变量

type& 变量 const type& 变量

2.引用作为函数的返回值,返回的地址要合法,比如:堆内存 全局变量 静态变量

相关文章
|
3月前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
54 1
|
2月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
24 3
|
2月前
|
存储
头指针和头结点的区别
头指针和头结点的区别
|
3月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
56 5
|
3月前
|
存储 C语言
一级指针和二级指针的区别
一级指针和二级指针的区别
46 1
|
3月前
|
存储 安全 编译器
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
35 2
|
3月前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
3月前
|
C语言
C语言--指针数组和数组指针的区别
C语言--指针数组和数组指针的区别
|
3月前
|
C++
【C++系列】指针对象和对象指针的区别
这段内容介绍了C++中`ListNode`对象和指针的两种使用方式以及它们的区别。首先,`ListNode dummy(0); ListNode* cur = &dummy;创建了一个`ListNode`对象`dummy`在栈上,`cur`是`dummy`的地址。而`ListNode* dummy = new ListNode(0); ListNode* cur = dummy;`则在堆上分配了一个`ListNode`,`dummy`和`cur`都是指向该对象的指针。使用`&dummy`作为虚拟头节点简化链表操作,避免特殊处理。栈分配内存自动管理但生命周期受限,堆分配内存需手动释放且速度较慢。
|
3月前
|
存储 C语言
C语言数组指针和指针数组的区别及使用方法
C语言数组指针和指针数组的区别及使用方法
54 0