C++八股文 004:指针和引用
发布时间:2024年01月02日
指针和引用是C++中两种不同的间接访问机制,它们都允许我们通过一个别名来操作其他变量或对象。以下是它们的主要异同点:
相同点:
- 间接访问:两者都可以用来间接访问存储在内存中其他位置的对象。
- 类型要求:指针和引用都需要与它们所指向或引用的对象类型相匹配。
不同点:
-
定义方式:
- 指针使用星号?
*
?定义,如?int *p;
,并用?&
?获取对象地址进行初始化,例如?p = &someInt;
- 引用使用?
&
?符号定义,并在声明时初始化,如?int &ref = someInt;
-
空值:
- 指针可以被赋值为?
nullptr
?或 0(NULL),表示不指向任何对象。 - 引用必须始终关联到一个有效的对象,不能引用未初始化的或者不存在的对象。
-
内存占用:
- 指针本身占用一定大小的内存空间来存储它所指向的对象的地址。
- 引用不占用额外的内存,它只是一个已存在对象的别名。
-
可变性:
- 指针可以改变它所指向的对象。
- 引用一旦初始化后就无法改变引用的对象,它总是绑定到同一个对象上。
-
解引用:
- 使用指针需要解引用以访问其指向的对象,如?
*p;
- 引用可以直接作为对象使用,无需解引用。
-
const性质:
- 指针可以有const限定,如?
const int *p;
?表示不能通过指针修改所指对象;int *const p;
?表示指针本身不可变。 - 引用本质上就是常量,一旦初始化后就不能改变引用的关系,所以没有对应的const修饰符,但可以有对常量对象的引用(如?
const int &ref
)。
-
sizeof操作符:
- 对于指针,
sizeof
?返回的是指针本身的大小。 - 对于引用,
sizeof
?返回的是引用对象的实际大小,因为它不是一个独立的实体。
文章来源:https://blog.csdn.net/k1419197516/article/details/135332531
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!