编辑
2020-05-13
编程语言
00
请注意,本文编写于 1710 天前,最后修改于 579 天前,其中某些信息可能已经过时。

目录

C++ 指针类型介绍

C++ 指针类型介绍

C++ 提供了多种指针类型,让开发者能更灵活地处理内存地址。以下是 C++ 中常见的指针类型:

  1. 基本指针:基本指针存储了一个变量的内存地址。例如:

    cppCopy codeint var = 20; int *ptr; ptr = &var;
  2. 空指针:空指针表示没有指向任何地址,可用关键字 NULLnullptr 表示。它常用于初始化指针变量,或表示指针不指向任何有效地址。

  3. 野指针:野指针是指向非法内存区域的指针,可能是未初始化的或已经释放的内存。

  4. void指针:void 指针是一种可以指向任何数据类型的指针。在使用前,通常需要将其转换为其他类型的指针。

  5. 常量指针:常量指针指向的值不能改变,但指针的指向可以改变。

    cppCopy codeconst int val = 10; const int *ptr = &val;
  6. 指针常量:指针常量指向的值可以改变,但指针的指向不能改变。

    cppCopy codeint val1 = 5, val2 = 10; int * const ptr = &val1;
  7. 常量指针常量:常量指针常量既不能改变指向的值,也不能改变指针的指向。

    cppCopy codeconst int val = 10; const int * const ptr = &val;

C++ 智能指针介绍

智能指针是一种在 C++11 及后续版本中引入的对象,用于自动管理动态内存。智能指针在销毁时会自动删除其所拥有的对象,避免了内存泄漏的问题。

  1. std::unique_ptrunique_ptr 确保同一时间只有一个 unique_ptr 可指向给定对象。当 unique_ptr 被销毁(例如其生命周期结束或被赋予新值)时,它将删除其所指向的对象。
  2. std::shared_ptrshared_ptr 允许多个指针指向同一个对象。shared_ptr 通过引用计数来跟踪有多少个 shared_ptr 指向同一对象。当最后一个 shared_ptr 被销毁,也就是当引用计数变为 0 时,它会删除其所指向的对象。
  3. std::weak_ptrweak_ptr 是一种不拥有其指向对象的智能指针,它指向由 std::shared_ptr 所拥有的对象。weak_ptr 的设计目的在于解决 shared_ptr 的循环引用问题。

通常,使用 std::make_uniquestd::make_shared 来创建智能指针,这种方式比使用 new 操作符更安全,也更高效。

本文作者:phae

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!