0

他の人が書いたコードを読んでいると、意味がよくわからない次の文に出くわしました。どんな助けでも大歓迎です。

str != ((void *)0)
4

3 に答える 3

4

strこの行は、おそらくポインターとNULLポインターを効果的に比較しています。

于 2012-10-04T02:57:58.750 に答える
1

((void *)0) は基本的に NULL と同じです

技術的には、NULL ポインターは 0x0 です。

したがって、そのステートメントは、ポインター str が NULL でないことを保証しています。

コンパイラ

于 2012-10-04T02:59:13.277 に答える
0

strがゼロか非ゼロかをテストする冗長な方法です。

この場合のように(void*)、C および C++ コードでキャストが広く使用されていることは、多くの場合、プログラマーがその言語を本当に理解していないことを示しています。コンパイラは、これらのキャストが必要な多くの場合にこれらのキャストを挿入します。この場合、それはまったく必要ありません。

于 2012-10-04T03:12:42.857 に答える