当我浏览其他人编写的一些代码时,我遇到了以下句子,我不确定其含义。任何帮助表示赞赏。
str != ((void *)0)
这一行有效地比较str
了一个指针,应该是一个指针NULL
。
((void *)0) 本质上与 NULL 相同
从技术上讲,NULL 指针是 0x0
因此该语句确保指针 str 不为 NULL
编译器
这是测试是否str
为零或非零的一种冗余方式。
在这种情况下,(void*)
在 C 和 C++ 代码中广泛使用强制转换通常表明程序员并不真正理解该语言。编译器将在需要它们的许多情况下插入这些强制转换。在这种情况下,它根本不需要。