1 NULLポインタ
ポインタ変数は関係なく、メモリが割り当てられていないかどうかに関係なく、メモリの長い彼にアドレスとしてとして、使用する権限を持っていない、と彼はを指すことができ、コンピュータメモリのどの部分を指すことができます。Cは、メモリポイントの正確さを保証するためのメカニズムを持っていない、プログラマ自身が警戒する必要があります。
このようなエラーの以下の実施例は、ポインタの初期化が操作されていない、それは非常に危険です。
char * strの。 (文字列)を取得します。 printf(" %sの"、STR)。
コンパイルとは、このプログラムが文句を言わないだろうリンクしますが、入力文字列を入力し、Enterキーを押しますと、セグメンテーションフォールト(セグメント障害)は、Linuxで表示されます。strが初期化されていないローカル変数であるので、その値が不確定である、アドレスにランダムであり、それは書き込みデータに彼に割り当てられていないか、全くメモリの読み取りと書き込みのアクセス許可されていない場合、使用が取得する()関数を指すように思われます明らかに間違っ。
私たちの提案は、NULLに初期化されていないポインタ代入です。例えば:
char * strの= NULL;
修正後、プログラムの実行が(null)をプリントアウトし、それによって、推測では(取得)とのprintf()判決は、NULLポインタを作りました。
1.1 NULLポインタの解釈
NULLは、C言語のヌルポインタを表します。NULLは、stdio.hのマクロで定義されているNULLメモリアドレス0を指しています。
#define NULL((void *型)0)
1.2 NULLポインタの目的
まず:ポインタの初期化
int型 * p = NULL;
第二:文字列が空の文字列であるかどうかを判断します
CHAR * DPRINT(CHAR * STR) { 場合(STR = NULL) 戻り 0 。 他 のprintf(" %sの" 、STR); }
第三:関数は成功裁判官を返します。
FILE * PFILE。 PFILE =のfopen(" mtfile.txt "、" R " ); もし(PFILE == NULL) のprintf(" オープンエラー");