空指针
本课属于 Coddy C++ 学习旅程的“逻辑与流程”单元。第 4 课,共 56 课。
声明指针时,它不会自动指向任何有意义的内容。未初始化的指针包含随机的内存地址,如果你尝试使用它,可能会导致严重错误。这时,空指针对于安全编程就至关重要。
空指针是明确指向无处的指针。在现代 C++ 中,你可以通过用 nullptr 初始化来创建空指针:
int* ptr = nullptr; // ptr 现在是空指针nullptr 关键字表示指针没有指向任何有效的内存位置。这比让指针未初始化安全得多,因为你可以在尝试解引用指针之前检查它是否为空。
使用任何指针之前,都应该用一个简单的 if 语句检查它是否不为 null:
if (ptr != nullptr) {
// 这里可以安全地使用 *ptr
int value = *ptr;
}这个练习可以防止程序因访问无效内存位置而崩溃。声明指针时,始终将其初始化为 nullptr,并在解引用前检查它是否为空。
挑战
简单创建一个程序,通过在解引用指针前检查指针是否为空,演示如何安全地使用指针。
将提供以下输入:
- 一个字符串,它的值为
"valid"或"null"
你的程序应当:
- 声明一个名为
data的整数变量,并将其初始化为42 - 声明一个名为
ptr的指针 - 如果输入是
"valid",将data的地址赋给ptr - 如果输入是
"null",将nullptr赋给ptr - 使用 if 语句检查
ptr是否非空,然后再尝试使用它 - 如果指针非空,打印它指向的值
- 如果指针为空,打印一条安全提示
请使用以下确切的输出格式:
Value: [value]对于空指针,请使用以下格式:
Pointer is null - cannot dereference亲手试试
#include <iostream>
#include <string>
using namespace std;
int main() {
// 读取输入
string input;
cin >> input;
// 声明变量 data
int data = 42;
// TODO: 在这里编写你的代码
// 声明一个名为 ptr 的指针
// 检查输入,并为 ptr 赋予合适的值
// 使用 if 语句安全地检查和使用指针
return 0;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C++ 在线编译器