当我还没有准备好声明适当的值时,为什么会有空指针?

问题描述

我正在学习用 C++ 编写代码并遇到了 null ptr。我读过的书说不能取消引用空指针。这是有道理的,因为没有什么可以取消引用的。但我的问题是,如果不能取消引用空指针,那么在定义尚未准备好初始化的变量的上下文中使用它们有什么意义。意思是如果我写一个程序如下:

int h =10;
int* h_pointer = &h;
int z = 123;
int* z_pointer = nullptr;

如果我不能将后面的值从 null 更改为 &z,为什么会有空指针。

解决方法

空指针不能解除引用

意味着你不能做

*z_pointer = z;

这是完全可以接受的,并且期望在不取消引用的情况下写入指针本身,例如

z_pointer = &z;