九(5).引用和指针的区别
区别:
在实现层面,引用就是指针
但在C++语言层面,引用不是实体类型,因此C++语言引用与指针存在明显区别
-
指针可以不初始化,引用必须初始化
-
指针的目标可以在初始化后随意变更(除非是指针常量),而引用一旦初始化就无法变更其目标
-
存在空指针,不存在空引用
-
存在指向指针的指针,不存在引用的引用
-
存在指针的引用,不存在引用的指针
-
存在指针数组,不存在引用数组,但存在数组引用
int a = 10; int b = 20;
// 存在指针的数组
int* parr[2] = {&a,&b}; // OK// 不存在引用的数组
int& patt[2] = {a,b}; // ERROR// 存在数组的引用
int arr[3];
int(&rr)[3] = arr;
#include <iostream>
using namespace std;int main() {int arr[3] = {10, 20, 30}; // 初始化数组// 定义引用 rr 绑定到 arrint(&rr)[3] = arr;// 通过引用访问数组cout << "rr[0] = " << rr[0] << endl; // 输出 10rr[1] = 99; // 修改 arr[1]cout << "arr[1] = " << arr[1] << endl; // 输出 99// 函数参数中使用数组引用auto printArray = [](int(&arr)[3]) {for (int i = 0; i < 3; i++) {cout << arr[i] << " ";}cout << endl;};printArray(arr); // 输出 10 99 30return 0;
}