問題タブ [null-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
80 参照

c++ - Cpp 関数で nullpointer を返すことはできません

このメソッドの最後に nullptr を返すことができませんか? インポートする必要があるライブラリはありますか?

0 投票する
3 に答える
5419 参照

c - sizeof 操作で有効な null ポインターの逆参照はありますか

セグメンテーション違反でクラッシュするはずのコードのスニペットに出くわしましたが、それでも問題なく動作します。問題のコードと関連するデータ構造は次のとおりです (関連するコメントはすぐ上にあります)。

なぜこれが機能するのですか?char * のサイズは、指定されたアーキテクチャのポインターのサイズに解決されると思いますが、ポインターを逆参照しているときにクラッシュして燃えてはいけませNULL?

0 投票する
1 に答える
5280 参照

c++ - オブジェクト参照がオブジェクトのインスタンスに設定されていません (C++/CLI)

以下のコードでは、このエラーが発生します: オブジェクト参照がオブジェクトのインスタンスに設定されていません

別のクラス内で呼び出されます。

「int tmp = this -> temp;」の行で実行する場合 これは未定義の値です。

どうしてこんなことに?どうしたの?

0 投票する
2 に答える
10803 参照

c - (int *)0 はヌルポインタですか?

これは、この質問の拡張と考えることができます(私は C のみに興味がありますが、拡張を完了するために C++ を追加します)。

6.3.2.3.3 の C11 標準には、次のように記載されています。

値が 0 の整数定数式、または type にキャストされたそのような式void *は、NULL ポインター定数と呼ばれます。

これに対する私の個人的な見解は、整数値が実際には 0 ではない可能性がある null ポインター0(void *)0表しているということですが、それは他の型への 0 キャストをカバーしていません。

ただし、標準は次のように続きます。

ヌル ポインター定数がポインター型に変換される場合、結果のポインターはヌル ポインターと呼ばれます。

キャストは変換メソッドの下にリストされている明示的な変換(C11、6.3) である(int *)0ため、null ポインターとしてカバーされます。

しかし、それでも私が不思議に思うのは、次のフレーズです

... または型にキャストされたそのような式void *...

上記のセマンティクスでは、この句はまったく役に立たないように見えます。問題は、このフレーズはまったく役に立たないということですか? そうでない場合、それにはどのような意味がありますか?その結果、(int *)0ヌルポインタかどうか?


議論に役立つ別の質問は次のとおりです。(long long)123「123 に変換long long」、または「123 型付き」と見なされlong longます。つまり、変換はあり(long long)123ますか? 何もない場合、上記の 2 番目の引用は null ポインターとしてカバーされません。(int *)0