面试中常会问到:“讲一讲指针和引用的区别”,主要区别如下表所示:
指针 | 引用 | |
---|---|---|
变量 | 指针是一个变量,不过变量存储的是一个地址,指向内存中的一个存储单元 | 引用只是别名 |
解引用 | 使用时需要 dereference(*p) | 不需要解引用 |
定义与初始化 | 可以初始化为nullptr,也可以不初始化(默认为空) | 定义时必须初始化,且不能为空 |
能否修改内容 | 指针可以指向别的内容,指向的内容也可以修改 | 引用不能再引用别人 |
sizeof | 指针 sizeof 得到指针的大小,32 位下就是 4 | 引用 sizeof 得到指向的对象的大小 |
自增、自减操作 | ++、-- 操作是修改指针 | 修改引用对象的值 |
可否多级 | 可以有多级指针 | 引用只能一级 |
另外:
引用的本质其实是常量指针,所以必须初始化,且不能修改指向的东西,且指针大小的内存。
参考 https://www.cnblogs.com/ronny/p/3662556.html。