每当我们创建一个新指针变量后, 立刻进行初始化是一种避免野指针的好习惯.下面两种初始化方式都可以.
1 | int* p1 = NULL; |
C当中, #define NULL (void*)0. C++当中, #define NULL 0
对于C++, 这会导致一个问题: 如果有一个重载函数, 通过参数类型为整数或指针进行重载, 那么当参数传入初始化为NULL的指针时, 函数会认为该参数应该执行整数重载函数. 考虑到#define NULL 0, 这是很容易理解的.
1 | #include <iostream> |
为了解决这个问题, C++定义了nullptr.
nullptr 专用于初始化空类型指针,不同类型的指针变量都可以使用 nullptr 来初始化, nullptr会根据变量类型隐式转换为相同的类型.
1 | int* ptr1 = nullptr; |
- 本文链接: https://www.xmofficial.top/2026/03/23/2-NULL与nullptr/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。