既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
前言
nullptr
是C++11引入的一个新特性,用于表示空指针。它提供了一种类型安全的方式来区分空指针和非空指针,避免了传统空指针(如NULL
或0
)可能导致的类型不匹配问题。使用nullptr
可以提高代码的可读性和安全性。同时,nullptr
还可以与C++的智能指针(如std::unique_ptr
、std::shared_ptr
等)一起使用,更好地管理动态分配的内存。
一、指针空值NULL
指针空值NULL是一种特殊的指针值,表示指针不指向任何有效的内存地址。在C和C++中,可以使用NULL
宏定义表示空指针。当使用NULL
赋值给一个指针时,表示该指针不指向任何内存地址。
使用空指针可以用于以下情况:
- 初始化指针变量,避免野指针的问题。
- 在条件判断中判断指针是否为空。
- 作为函数的返回值,表示函数执行失败或者没有有效的返回值。
需要注意的是,访问空指针会导致程序崩溃或者产生未定义的行为,因此在使用指针之前,应该先判断指针是否为空。可以使用条件语句或者断言来判断指针是否为空。
二、指针空值nullptr(C++11)
指针空值nullptr
是C++11引入的一种特殊的空指针常量。在以前的C++标准中,常用的空指针常量是NULL
,它通常被定义为整数0
或者(void*)0
。然而,这样的定义可能会引起一些类型转换的问题,因为整数0可能会被隐式地转换为其他类型的指针,从而导致一些意想不到的错误。
为了解决这个问题,C++11引入了新的空指针常量nullptr
。nullptr
是一个特殊的关键字,它的类型是std::nullptr_t
,表示一个空指针常量。使用nullptr
定义空指针可以避免类型转换的问题,因为nullptr
只能被隐式地转换为指针类型,而不能被转换为整数类型。
C++98中的指针空值
在良好的C/C++编程习惯中,声明一个变量时最好给该变量一个合适的初始值,否则可能会出现不可预料的错误,比如未初始化的指针。如果一个指针没有合法的指向,我们基本都是按照如下方式对其进行初始化:
void TestPtr()
{
int\* p1 = NULL;
int\* p2 = 0;
// ……
}
NULL
实际是一个宏,在传统的C头文件(stddef.h
)中,可以看到如下代码:
#ifndef NULL
#ifdef \_\_cplusplus
#define NULL 0
#else
#define NULL ((void \*)0)
#endif
#endif
可以看到,NULL
可能被定义为字面常量0,或者被定义为无类型指针(void*
)的常量。不论采取何种定义,在使用空值的指针时,都不可避免的会遇到一些麻烦,比如:
void f(int)
{
cout<<"f(int)"<<endl;
}
void f(int\*)
{
cout<<"f(int\*)"<<endl;
![img](https://img-blog.csdnimg.cn/img_convert/0c03dae4a70d836e67d0596e146917f2.png)
![img](https://img-blog.csdnimg.cn/img_convert/08a8d457958dac1b95b02d0c09b17553.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**
录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**