ホームページ >バックエンド開発 >C++ >C で参照への NULL ポインターを逆参照するとどうなりますか?

C で参照への NULL ポインターを逆参照するとどうなりますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-15 01:24:10244ブラウズ

What Happens When You Dereference a NULL Pointer to a Reference in C  ?

参照のための NULL ポインターの逆参照

C 標準では、参照を取得するための NULL ポインターの逆参照の動作に明示的に対処しています。この方法は、未定義の動作とみなされます。

以下の例では、

int* ptr = NULL;
int& ref = *ptr;
int* ptr2 = &ref;

NULL ポインター ptr の逆参照の試行は、未定義の動作とみなされます。標準 (8.3.2/4「参照」) によると:

注: 特に、null 参照は、明確に定義されたプログラム内に存在できません。このような参照は、null ポインタを逆参照することで得られる「オブジェクト」にバインドすることになるため、未定義の動作が発生します。

したがって、への参照を割り当てると、逆参照された NULL ポインタは無効であり、動作は明確に定義されていません。逆参照された NULL ポインターから取得された参照を指す ptr2 を使用した場合の結果も未定義です。

NULL ポインターの逆参照の禁止の例外の 1 つは、sizeof 演算子と使用した場合です。このコンテキストでは、ポインターは実際には評価されないため、逆参照しても未定義の動作は発生しません。ただし、この例外は sizeof 演算子に限定されます。

以上がC で参照への NULL ポインターを逆参照するとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。