像考虑我声明两个指针NULL。然后,如果我比较它们,结果是真实的。但是如果我们认为NULL是“无”,那么我们怎么能说两个“nothings”是平等的?那是出于某些特定的原因吗?任何帮助赞赏。 :)为什么C中的空指针等于C中的另一个空指针?
0
A
回答
2
当您将指针指向NULL时,这意味着它指向的内存地址为0x0
。
考虑下面的例子中,
#include <stdio.h>
int main()
{
char *p = NULL;
..
..
这里,* P指向NULL
。如果我们在gdb
校验,那么我们将得到以下,
(gdb) p p
$1 = 0x0
0x0
是NULL
值即0的地址,则无法访问0x0
内存地址。
(gdb) p *p
Cannot access memory at address 0x0
如果您尝试访问说segmentation fault
现在,如果你比较它们指向的内存地址0x0
即NULL
然后两个指针的内存地址0x0
然后程序会崩溃这将是相同的只是作为NULL
默认值为0
6
在C中,任何类型的两个空指针保证比较相等。宏NULL
被定义为实现定义的空指针常量,其在C99
中可以可移植地表示为隐式地或显式地转换为类型void *
的整数值0。
相关问题
- 1. 指针值C空指针
- 2. C++ - 空指针
- 3. 传递指向C++中另一个指针的'const'指针
- 4. 在C和C++中,const指针指针指的是什么?
- 5. C函数指针铸造空指针
- 6. 在函数中引用另一个指针的C指针
- 7. 在C++中为指针指定指针
- 8. 为什么我的C++向量在不遵守指针时使用空指针。
- 9. 指向指针的指针与C中指针的地址有什么区别?
- 10. 无法理解c中的空指针
- 11. 指向另一个指针的指针 - 会发生什么?
- 12. 空指针无效 - C++ - VS2010
- 13. Visual C++/CLI(CLR)空指针
- 14. C++设置空指针?
- 15. C++:空指针和结构
- 16. C++中的指针分配。 (指针的指针到指针位于LHS)
- 17. 为什么在C中使用指针?
- 18. C中的空函数指针是什么意思?
- 19. 为什么这个C代码示例使用指针指针?
- 20. 在C++中删除空指针
- 21. 将指针的引用复制到另一个指针C
- 22. C++删除一个指针指针
- 23. 为什么有人需要一个指向指针的指针?
- 24. C:为什么指针和指针有不同的值?
- 25. C指针队列中的指针
- 26. C++中函数指针的指针
- 27. 为什么这个C函数将一个指针指针作为参数?
- 28. Typcast一个指向char的空指针*
- 29. C++初始化字符指针为空
- 30. (C++)检查指针数组为空值
因为只有_the_空指针。 – byxor
考虑我声明两个整数是'5'。如果我比较他们,他们是平等的。同样的想法适用于指针。 – byxor
“为什么”的问题很难在SO上回答。答案是“因为标准是这样说的”并不令人满意,“标准为什么这么说?”这个问题。需要对所有标准作者的个性和目标进行精神分析,并了解标准制定过程。 –