ホームページ > バックエンド開発 > C++ > C 参照が null になることはありますか?

C 参照が null になることはありますか?

Patricia Arquette
リリース: 2024-12-14 06:36:21
オリジナル
946 人が閲覧しました

Can C   References Ever Be Null?

Null 参照の幻: それらは本物ですか?

C では参照が null になる可能性があるという疑問が生じます。次のコード スニペットを考えてみましょう:

int &nullReference = *(int*)0;
ログイン後にコピー

驚くべきことに、g と Clang は両方とも、たとえ厳格なフラグを使用していても、警告なしでこれをコンパイルします。ただし、nullReference を逆参照しようとすると、未定義の動作が呼び出されます。

問題の核心は、参照とポインタの区別にあります。 C 標準によれば、参照は有効なオブジェクトまたは関数に初期化される必要があります。 NULL 参照は、定義上、明確に定義されたプログラムには存在できません。このような参照を作成する唯一の方法は、null ポインターを逆参照することによって取得された「オブジェクト」に参照をバインドすることですが、これは厳密に禁止されています。

したがって、nullReference 宣言は構文的には null ポインターの割り当てに似ていますが、これは実際には null 参照を表しません。コンパイラはこれを無効な操作として認識し、ランダムなメモリ位置を割り当てます。

この誤解は、参照をポインタのように扱うことから生じています。ポインターには、未定義の位置を示す null 値を割り当てることができます。ただし、参照は常に有効なエンティティを指している必要があります。 null 参照を作成したり、null 参照にアクセスしたりしようとすることは、参照動作の基本原則に反するため、C では無駄です。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート