Menu
CoddyTech

NULL 指针

本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 5 课,共 63 课。

有时,你需要声明一个指针,但暂时没有有效的内存地址可以赋给它。在这种情况下,将指针初始化为一个名为 NULL 的特殊值很重要。

NULL 指针是一个不指向任何有效内存地址的指针。在 C 中,NULL 通常定义为 0 或 (void*)0。将指针初始化为 NULL 时,你明确表示它当前没有指向任何有用的内容。

int *ptr = NULL;    // 将指针初始化为 NULL
printf("%p", ptr);  // 这会打印 0 或 (nil)

将指针初始化为 NULL 是一种良好的编程习惯,因为这样可以避免指针包含随机垃圾值。未初始化的指针可能包含任意随机内存地址,如果你不小心尝试使用它,就可能导致无法预测的行为。

你可以在使用指针前检查它是否为 NULL,这有助于防止程序崩溃,让代码更加健壮。随着程序变得越来越复杂,这种安全检查会变得尤为重要。

challenge icon

挑战

简单

编写一个 C 程序,演示如何正确初始化和检查 NULL 指针。你的程序应:

  1. 声明一个名为 safe_ptr 的整数指针,并将其初始化为 NULL
  2. 声明一个名为 char_ptr 的字符指针,并将其初始化为 NULL
  3. 使用 if 语句检查 safe_ptr 是否为 NULL,如果是,则打印 "safe_ptr is NULL"
  4. 使用 if 语句检查 char_ptr 是否为 NULL,如果是,则打印 "char_ptr is NULL"
  5. 使用 printf 和 %p 格式说明符,打印 safe_ptr 中存储的内存地址
  6. 使用 printf 和 %p 格式说明符,打印 char_ptr 中存储的内存地址

你的输出应按以下格式显示结果:

safe_ptr is NULL
char_ptr is NULL
safe_ptr address: [address]
char_ptr address: [address]

根据你的系统,实际内存地址可能显示为 0、(nil) 或类似的 NULL 表示形式,但格式和标签必须与上面完全一致。

亲手试试

#include <stdio.h>

int main() {
    // TODO: 在这里编写你的代码
    // 声明并初始化你的指针
    // 检查指针是否为 NULL
    // 打印要求的输出
    
    return 0;
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: C 在线编译器