c - "de-referencing a NULL pointer"到底是什么意思?

标签 c pointers

我完全是 C 语言的新手,在我的大学工作期间,我遇到过代码中的注释,这些注释经常提到取消引用 NULL 指针。我确实有 C# 背景,我一直认为这可能类似于您在 .Net 中获得的“NullReferenceException”,但现在我有严重的怀疑。

有人可以通俗地向我解释一下这是什么以及为什么不好吗?

最佳答案

NULL 指针指向不存在的内存。这可能是地址 0x00000000 或任何其他实现定义的值(只要它永远不可能是真实地址)。取消引用它意味着尝试访问指针指向的任何内容。 * 运算符是取消引用运算符:

int a, b, c; // some integers
int *pi;     // a pointer to an integer

a = 5;
pi = &a; // pi points to a
b = *pi; // b is now 5
pi = NULL;
c = *pi; // this is a NULL pointer dereference

这与 C# 中的 NullReferenceException 完全相同,只是 C 中的指针可以指向任何数据对象,甚至是数组中的元素。

关于c - "de-referencing a NULL pointer"到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4007268/

相关文章:

c - 使用 fw_setenv 设置 U-boot 的 env (U-boot)

c++ - 比较中 NULL 和零的区别

正确的格式说明符以打印字符串

使用指向数组的指针的 C++ 迭代器范围

c - C 变量的内存地址

Char* 数组参数 C

c - 如何打开 ext2 文件系统上的文件?

c++ - 如何检查文件是否为常规文件?

pointers - 如何传递函数引用而不是函数本身?

c++ - 删除这些指针时出错