指针 | 引用 |
---|---|
数据类型 | 命名机制 |
定义指针变量 | 取别名 |
占用4字节 | 不占用内存 |
可以不初始化 | 必须初始化 |
有空指针 | 没有空引用 |
方便配合堆内存使用 | 变量传参 |
可以定义指针数组 | 不能定义引用数组,但可以定义数组引用 |
可以定义二级指针 | 不能定义二级引用 |
有野指针 | 悬空引用 |
相同点:
1、跨函数共享变量
2、提高函数的传参效率
3、都需要const保护
总结:引用比指针的效率高、安全,但无法方便配合堆内存使用,所以提高函数的传参效率、跨函数共享变量时使用引用,访问堆内存使用指针。
指针 | 引用 |
---|---|
数据类型 | 命名机制 |
定义指针变量 | 取别名 |
占用4字节 | 不占用内存 |
可以不初始化 | 必须初始化 |
有空指针 | 没有空引用 |
方便配合堆内存使用 | 变量传参 |
可以定义指针数组 | 不能定义引用数组,但可以定义数组引用 |
可以定义二级指针 | 不能定义二级引用 |
有野指针 | 悬空引用 |
相同点:
1、跨函数共享变量
2、提高函数的传参效率
3、都需要const保护
总结:引用比指针的效率高、安全,但无法方便配合堆内存使用,所以提高函数的传参效率、跨函数共享变量时使用引用,访问堆内存使用指针。