ポインタを利用するときは、必ずその値が指し示すアドレスに値がある必要がある。
int a; int *p; a = *p; //ポインタがなにもないアドレスを指し示している為エラー
プログラム内で、どこも指し示していないことを明示する場合に使う。
NULLポインタはどの型のポインタにも格納できる。
int *p = NULL;
ポインタpが有効かどうかを調べるには、論理演算を使って調べることができる。
#include <stdio.h>
#include <string.h>
int main(void)
{
char s[] = "test aaa";
char c = 'd'; //ダブルクォートで囲むとエラーになる
char *p = NULL;
printf("文字列 %s の中に文字 %c ", s, c);
p = strchr(s, c);
if (!p) {
printf("なし\n");
} else {
printf("あり\n");
}
//出力結果は「なし」になる。
}
strchrの関数は以下の動きをする
strの中からchrを検索して最初に発見した文字以降のアドレスを返す。文字を発見できなかった場合はNULL(\0)を返す。
尚、一般的には検索する文字はint型にcastする。