在 C 中,NULL 指针和指向 0 的指针有什么区别?
问问题
955 次
5 回答
7
ISO/IEC 9899:TC2 在6.3.2.3 Pointers
3 值为 0 的整型常量表达式或转换为 void * 类型的此类表达式称为空指针常量。55) 如果将空指针常量转换为指针类型,则生成的指针称为空指针,保证比较不等于指向任何对象或函数的指针
宏 NULL 扩展为实现定义的空指针常量。
任何两个空指针应该比较相等。
于 2011-09-30T16:20:16.823 回答
6
就在这里。标准规定NULL
总是指向无效内存。但它并没有说明指针的整数表示必须为 0。我从未遇到过NULL
除 0 以外的实现,但这不是标准规定的。
请注意,将文字分配给0
指针并不意味着指针采用整数表示 0。这意味着将特殊的空指针值分配给指针变量。
于 2011-09-30T16:14:45.377 回答
3
在指针上下文中评估文字0
与NULL
. 编译器用来表示NULL
指针的任何位模式都是隐藏的。
于 2011-09-30T16:17:54.593 回答
1
旧的 comp.lang.c 常见问题解答有很大一部分是关于空指针的,值得一读。
于 2011-09-30T16:21:45.730 回答
0
这个想法是NULL
指针应该以某种方式表示无效的内存区域。
因此,由于在较低的内存段中映射了 OS 代码,因此使用 0 的值(表示 NULL 指针),因为内存中的该区域不属于用户程序,而是映射到 OS 代码。
于 2011-09-30T16:36:44.283 回答