[解決済み] C/C++の(nil)ポインタ
2022-02-10 23:22:55
質問
あるプロジェクトで作業をしているのですが、このエラーに何度も遭遇し、プロジェクトを完了させることができません。プログラムの実行中に作られるオブジェクトを指すポインタの1つを初期化し、それを
NULL
. そして、それが何に設定されているかを確認するためにチェックすると、その値は
nil
. どうしてこんなことが可能なのでしょうか?C言語でnilポインタが存在するとは思わなかったのですが、これを回避する方法はあるのでしょうか?
struct order_line *front = NULL;
...
printf("Head: %p\n", front); // prints -> Head: (nil)
解決方法は?
%p
で
printf
はポインタ型をフォーマットします。これは、ヌルポインタを区別して表示することになります。
(nil)
はポインタの文脈では特別な値だからです。ヌルポインタに対して0を出力したい場合は、ポインタを整数にキャストして
%d
の代わりに
printf("Head: %d\n", (int) front);
まだ使えるかもしれないので、オリジナルの回答。
NULL
は、次のように定義されたマクロです。
0
または
((void *) 0)
へのポインタを設定した場合、そのポインタは
NULL
に設定するのと全く同じです。
0
. これは、アドレス0にあるメモリがプログラムに割り当てられることがないため、ヌルポインタを宣言する目的で動作します。
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++エラー。アーキテクチャ x86_64 に対して未定義のシンボル
-
[解決済み】コンストラクターでのエラー:識別子を期待されますか?
-
[解決済み】Visual Studio 2015で「非標準の構文; '&'を使用してメンバーへのポインターを作成します」エラー
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】'cout'は型名ではない
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?