NULL 指针
本课属于 Coddy C 学习旅程的“逻辑与流程”单元。第 5 课,共 63 课。
有时,你需要声明一个指针,但暂时没有有效的内存地址可以赋给它。在这种情况下,将指针初始化为一个名为 NULL 的特殊值很重要。
NULL 指针是一个不指向任何有效内存地址的指针。在 C 中,NULL 通常定义为 0 或 (void*)0。将指针初始化为 NULL 时,你明确表示它当前没有指向任何有用的内容。
int *ptr = NULL; // 将指针初始化为 NULL
printf("%p", ptr); // 这会打印 0 或 (nil)将指针初始化为 NULL 是一种良好的编程习惯,因为这样可以避免指针包含随机垃圾值。未初始化的指针可能包含任意随机内存地址,如果你不小心尝试使用它,就可能导致无法预测的行为。
你可以在使用指针前检查它是否为 NULL,这有助于防止程序崩溃,让代码更加健壮。随着程序变得越来越复杂,这种安全检查会变得尤为重要。
挑战
简单编写一个 C 程序,演示如何正确初始化和检查 NULL 指针。你的程序应:
- 声明一个名为
safe_ptr的整数指针,并将其初始化为 NULL - 声明一个名为
char_ptr的字符指针,并将其初始化为 NULL - 使用 if 语句检查
safe_ptr是否为 NULL,如果是,则打印 "safe_ptr is NULL" - 使用 if 语句检查
char_ptr是否为 NULL,如果是,则打印 "char_ptr is NULL" - 使用
printf和%p格式说明符,打印safe_ptr中存储的内存地址 - 使用
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;
}这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: C 在线编译器