引用和指针的区别

简介: 引用和指针的区别

引用和指针的区别


1、定义和性质不同

1、指针是一个变量,存储的地址,指向内存单元

2、引用是变量的别名,跟原始变量是同一块内存

int a = 10;
int *p = &a; // p是指针, &在此是取地址运算 
int &r = a; // r是引用, &在此起标识作用

2、指针可以不初始化,引用必须初始化

int* ptr;  //正确
int& ref;  //error:引用变量"ref"需要初始值设定项

3、指针可以有多级,引用只能是一级

int **p; // 合法
int &&a; // 不合法

4、指针可以指向NULL,引用不可以为NULL

int *p = NULL; // 合法
int &r = NULL; // 不合法

5、指针初始化之后可以再改变指向,引用不可以

int a = 996;
int *p = &a; // 初始化, p 是 a 的地址
int &r = a; // 初始化, r 是 a 的引用
int b = 885;
p = &b;    // 合法, p 更改为 b 的地址
r = b;     // 不合法, r 不可以再变

6、sizeof 的运算结果不同

int a = 996;
int *p = &a;
int &r = a;
cout << sizeof(p); // 返回 int* 类型的大小
cout << sizeof(r); // 返回 int 类型的大小

7、自增运算意义不同

int a = 996;
int *p = &a;
int &r = a;
p++;  指向下一块地址
r++; 相当于a++

8、指针和引用作为函数参数时,指针需要检查是否为空,引用不需要

void fun_p(int *p)
{
    // 需要检查P是否为空
    if (p == NULL) 
    {
        // do something
    }
}
void fun_r(int &r)
{
    // 不需要检查r
    // do something
}

目录
相关文章
|
16天前
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
20 1
|
3天前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
32 5
|
9天前
|
存储 C语言
一级指针和二级指针的区别
一级指针和二级指针的区别
13 1
|
23天前
|
存储 安全 编译器
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
13 2
|
26天前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
7天前
|
C语言
C语言--指针数组和数组指针的区别
C语言--指针数组和数组指针的区别
|
22天前
|
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`作为虚拟头节点简化链表操作,避免特殊处理。栈分配内存自动管理但生命周期受限,堆分配内存需手动释放且速度较慢。
|
23天前
|
存储 C语言
C语言数组指针和指针数组的区别及使用方法
C语言数组指针和指针数组的区别及使用方法
18 0
|
29天前
|
C语言
在引用数组元素时指针的运算
在引用数组元素时指针的运算
20 0