13

ケネス・リークのC本のポインターを読んでください。NULバイトは、ビットがすべて0で、このように記述され'\0'、NULLの値が0で、値がゼロのポインターを参照していることを示しています。

どちらも整数であり、値が同じであるため、同じ意味で使用できます。

そしてこのコードも:

char const *keyword[] = { "do", "for", "if", "register", 
                              "return", "switch", "while", NULL };

このコードでは、NULLにより、テーブルを検索する関数がテーブルの終わりを検出できます。では、NULLマクロとNULマクロを交換できますか?

4

2 に答える 2

17

NULASCII文字コード0の表記です。

NULLstddefnullポインタ用に定義されたマクロです。

したがって、いいえ、それらは互換的に使用されるべきではありません。

于 2013-03-18T14:34:20.017 に答える
14

NUL少なくともCには、標準化されたマクロはありません。

また、「ねえ、私たちはポインタを扱っている」ということを読者に知らせるNULLという単純な文字よりも利点があります。これは利点と見なされる可能性があります。0

C ++では、イディオムは長い間単に書くだけでしたが、その後、何らかの理由0でそれを逆転させ、新しいリテラルを導入したようです。nullptr

Cでは、NULLポインタと'\0'文字を書くことをお勧めします。

于 2013-03-18T14:34:20.347 に答える