ホームページ >バックエンド開発 >C++ >C 参照を Null にすることはできますか?

C 参照を Null にすることはできますか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-17 13:58:11625ブラウズ

Can a C   Reference Be Null?

Null 参照は可能ですか?

このコードでは、参照が宣言され、null ポインタの逆参照から取得された値に初期化されます。

int &nullReference = *(int*)0;

コンパイラの動作に基づいて有効に見えるかもしれませんが、参照は異なるものであることを理解することが重要です。ポインタ。

C 標準 (8.3.2/1) によると:

「参照は、有効なオブジェクトまたは関数を参照するように初期化されます...特に null 参照明確に定義されたプログラムには存在できません。"

これは、有効なオブジェクトを参照しない null 参照が C 内で明確に定義された概念ではないことを強調しています。 .

さらに、標準 (1.9/4) では、「null ポインターの逆参照の影響」は未定義であると述べられています。この場合、null ポインターを使用して参照を初期化すると、null ポインター自体を逆参照することになり、これは明示的に未定義の動作です。

したがって、コードは警告なしでコンパイルされる可能性がありますが、無効です。 C コードは避けてください。 Null 参照はこの言語では有効な概念ではないため、null 参照を作成しようとすると未定義の動作が発生します。

以上がC 参照を Null にすることはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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