C++ 提供了多种指针类型,让开发者能更灵活地处理内存地址。以下是 C++ 中常见的指针类型:
基本指针:基本指针存储了一个变量的内存地址。例如:
cppCopy codeint var = 20; int *ptr; ptr = &var;
空指针:空指针表示没有指向任何地址,可用关键字 NULL
或 nullptr
表示。它常用于初始化指针变量,或表示指针不指向任何有效地址。
野指针:野指针是指向非法内存区域的指针,可能是未初始化的或已经释放的内存。
void指针:void 指针是一种可以指向任何数据类型的指针。在使用前,通常需要将其转换为其他类型的指针。
常量指针:常量指针指向的值不能改变,但指针的指向可以改变。
cppCopy codeconst int val = 10; const int *ptr = &val;
指针常量:指针常量指向的值可以改变,但指针的指向不能改变。
cppCopy codeint val1 = 5, val2 = 10; int * const ptr = &val1;
常量指针常量:常量指针常量既不能改变指向的值,也不能改变指针的指向。
cppCopy codeconst int val = 10; const int * const ptr = &val;
智能指针是一种在 C++11 及后续版本中引入的对象,用于自动管理动态内存。智能指针在销毁时会自动删除其所拥有的对象,避免了内存泄漏的问题。
std::unique_ptr
:unique_ptr
确保同一时间只有一个 unique_ptr
可指向给定对象。当 unique_ptr
被销毁(例如其生命周期结束或被赋予新值)时,它将删除其所指向的对象。std::shared_ptr
:shared_ptr
允许多个指针指向同一个对象。shared_ptr
通过引用计数来跟踪有多少个 shared_ptr
指向同一对象。当最后一个 shared_ptr
被销毁,也就是当引用计数变为 0 时,它会删除其所指向的对象。std::weak_ptr
:weak_ptr
是一种不拥有其指向对象的智能指针,它指向由 std::shared_ptr
所拥有的对象。weak_ptr
的设计目的在于解决 shared_ptr
的循环引用问题。通常,使用 std::make_unique
和 std::make_shared
来创建智能指针,这种方式比使用 new
操作符更安全,也更高效。
本文作者:phae
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!