ポインタの初期化と安全確認に!「NULLポインタ」とは?C言語の基本をやさしく解説
C言語では、ポインタを使うときの初期値やエラー確認に使われる特別な値があります。
それが NULLポインタ(NULL pointer) です。
本記事では、NULLポインタの意味・使い方・注意点についてやさしく解説します。
NULLポインタとは?
NULLポインタとは、「どこも指していない」ことを表す特別なポインタ値です。
初期化されていないポインタや、エラー時のポインタは NULL
にしておくことで安全な判定ができます。
NULLの使い方
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *p = NULL; // どこも指していないポインタ
if (p == NULL) {
printf("ポインタはNULLです(未使用)\n");
}
return 0;
}
NULLは何を意味する?
NULL
は定義上は 0
に等しい値ですが、ポインタ型の「何も指していない」状態を表すために使います。
#include <stddef.h>
または #include <stdlib.h>
に定義されています。
NULLポインタが重要な理由
- 使う前に
NULL
かどうかをチェックできる
malloc()
などが失敗したときにも NULL
を返す
- NULLで初期化しておくことで意図しないメモリアクセスを防げる
NULLポインタを参照するとどうなる?
int *p = NULL;
*p = 10; // ← これはエラー!実行時にクラッシュします
NULLポインタを参照(間接アクセス)すると実行時エラーになります。
必ずアクセス前に NULL
チェックをしましょう。
使用例:メモリ確保後のチェック
int *arr = (int *)malloc(sizeof(int) * 10);
if (arr == NULL) {
printf("メモリ確保に失敗しました\n");
return 1;
}
malloc()
の戻り値は、確保に失敗したときは NULL になります。
このようにしてエラー処理ができます。
まとめ
NULLポインタは、「何も指していないポインタ」の安全な表現です。
ポインタを使うときは、NULLで初期化→使用前にNULLチェックという基本ルールを守ることで、
バグやクラッシュを防ぐことができます。初心者の方は特に意識して使ってみましょう!