NULLポインタの参照を解除する」とは、具体的にどのようなことですか?
2023-12-01 22:21:12
質問
私はC言語の全くの初心者ですが、大学の授業中に、しばしばNULLポインタの参照解除に言及するコード内のコメントに出会いました。 私は C# のバックグラウンドを持っており、これは .Net で取得する "NullReferenceException" に似ているかもしれないと感じていましたが、今私は真剣に疑問を持っています。
どなたか、これが何であり、なぜ悪いのか、素人の私に正確に説明していただけませんか。
どのように解決するのですか?
A
NULL
ポインタは存在しないメモリを指します。これはアドレス
0x00000000
または他の実装で定義された値です (実際のアドレスになり得ない限り)。それを参照解除することは、ポインタが指すものにアクセスしようとすることを意味する。そのため
*
演算子が再参照演算子です。
int a, b, c; // some integers
int *pi; // a pointer to an integer
a = 5;
pi = &a; // pi points to a
b = *pi; // b is now 5
pi = NULL;
c = *pi; // this is a NULL pointer dereference
と全く同じものです。
NullReferenceException
と全く同じですが、Cのポインターはどんなデータオブジェクトでも、たとえ配列の中の要素でも指し示すことができます。
関連
-
ポインタ定数および定数ポインタ
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] スマートポインターとは何ですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] なぜ、オブジェクトそのものではなく、ポインタを使用しなければならないのですか?
-
[解決済み] C言語のコードで「:-!」とは何ですか?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み] 難読化Cコードコンテスト2006。sykes2.cの解説をお願いします。
-
[解決済み] ポインタの「デリファレンス」とはどういう意味ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン