他の人が書いたコードを読んでいると、意味がよくわからない次の文に出くわしました。どんな助けでも大歓迎です。
str != ((void *)0)
str
この行は、おそらくポインターとNULL
ポインターを効果的に比較しています。
((void *)0) は基本的に NULL と同じです
技術的には、NULL ポインターは 0x0 です。
したがって、そのステートメントは、ポインター str が NULL でないことを保証しています。
コンパイラ
str
がゼロか非ゼロかをテストする冗長な方法です。
この場合のように(void*)
、C および C++ コードでキャストが広く使用されていることは、多くの場合、プログラマーがその言語を本当に理解していないことを示しています。コンパイラは、これらのキャストが必要な多くの場合にこれらのキャストを挿入します。この場合、それはまったく必要ありません。