解锁即可观看《Java工程师2022》完整课程视频

Java工程师2022

以一线互联网公司产品标准,打造适合零基础学习的全干货Java课程。选择Java,挑战高薪!

【第1周】Java基础夯实-环境搭建与语法入门
【第2周】Java基础夯实-循环、数组与方法
【第3周】Java基础进阶-面向对象之封装与继承
【第4周】Java基础进阶-面向对象之单例模式与多态
【第5周】Java基础进阶-异常、包装类、字符串与集合
【第6~7周】Java基础进阶-泛型、多线程、I/O流与综合案例
【第8~9周】数据管理必备利器-MySQL
【第10周】Java与数据库连接的桥梁
【第11周】Java高级编程
【第12周】Java必知必会框架入门-MyBatis
【第13~14周】前端编程必备三剑客——HTML、CSS与JS
【第15~16周】前端综合案例实战与前端火热框架VUE3入门
【第17周】Java Web编程急速入门
【第18周】Java Web编程进阶-常用功能与过滤器
【第19~20周】Java Web编程实战-MyBatis实现OA系统项目实战
【第21~22周】Java主流框架入门-Spring
【第23周】Java主流框架入门-Spring MVC
【第24周】Java主流框架实战-SSM开发社交网站
【第25~26周】Java主流框架实战-Spring Boot电商项目实战
【第27~28周】Java主流框架进阶实战-Spring Boot电商项目升级
【第29周】面试指导-高频面试题详解
【第30~31周】Java分布式入门
【第32周】Java微服务入门-Spring Cloud
【第33~34周】Spring Cloud微服务电商项目实战
【第35周】Zookeeper+Dubbo应用与就业指导
章节
问答
课签
笔记
评论
占位
占位

C++ 中的空指针

我们之前的课程中曾经讲过空指针的问题,知道在 C++ 中,有使用 NULL 和 nullptr 两种方式表示空指针的方法。

int * p = NULL;
int * p = nullptr;

这一小节来看看两者的区别。

NULL

首先看 NULL,在 C++ 中,NULL 其实就是 0。

例如:

int * p = NULL;

等价于:

int * p = 0;

因为在 C++ 中,0 地址通常是被保护起来的,不可访问的。因此用 0 地址来指代这个指针哪里都不指,是可以的。但是这里面却存在一些问题。因为 NULL 就是 0,所以我们可以把 NULL 用在其他地方。

例如:

int a = NULL;

我们可以将一个 int 变量赋值成 NULL,你永远无法阻止有人这么干。而在某些情况下,甚至会在不经意间酿成惨剧。

例如:

class A
{
public:
    void func(void * t)
    {
    }

    void func(int i)
    {
    }

}

这个类中,func 函数有两个重载。这个时候,我们尝试用 NULL 调用一下:

int main(int argc,char **argv)
{
    A a;
    a.func(NULL);

    return 0;
}

猜猜这个函数到底调用的哪个重载?

nullptr

正是由于 NULL 会导致这样的混乱,所以在 C++11 标准之后,C++ 标准委员会为 C++ 添加了 nullptr 关键字。我们可以将 NULL 赋值给一个普通变量,而 nullptr 却不能。

int a = nullptr;

这样是会直接报错的。

nullptr 只能赋值给指针,所以不会有 NULL 那样的问题。

所以,只要你的编译器兼容 C++11 标准,那么你应该使用 nullptr。

任务

?不会了怎么办
||

提问题

写笔记

公开笔记
提交
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布
全部 我要发布
最热 最新
只看我的

手记推荐

更多

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?