#define NULL ((void *)0)
void *malloc( size_t size ) 指定したサイズの動的記憶域が用意できなければ、NULLを返す FILE *fopen ( const chat *filename, const char *mode ) ファイルがオープンできなければNULLを返す char *strstr( const char *cs, const char *ct ) csの中にctが含まれれば、その先頭の位置を返す。見つからなければNULLが返る【 char へのポインタ配列のデータの終わりを NULL で示す例 】
#include <stdio.h> #include <string.h> main() { char *mylot[] = { "141421","314159","445312","161376","214387",NULL }; char *winnum = "161376"; char **p = mylot; while( *p != NULL ) { printf( "%s", *p ); if( strcmp( winnum, *p ) == 0 ) printf( " 当たり!\n" ); else printf( " はずれ\n" ); p++; } }実行結果
141421 はずれ 314159 はずれ 445312 はずれ 161376 当たり! 214387 はずれ当たりを調べるループで、char * を指すポインタを NULL でない間比べています。
(今週のクイズです)
入力用の標準関数は、入力の終了に EOF を返すものが多いのですが、NULL を返すものもあります。どんな関数でしょう?
(答えは、次回のC言語の Tips で ・・・)
[ 関連記事 ] 用語集:ポインタ, Tips:ポインタの間違い探し, 配列とポインタのクイズ(1), 同(2), 同(3)
[ ご案内] ポインタの要点を学習できるコース:要点講座 [配列とポインタ編]
// --------------- 比較用の関数 cmp -------------------
int cmp( const void *p, const void *q ) {
int n = ((choco_t*)p)->price - ((choco_t*)q)->price;
if( n == 0 ) n = ((choco_t*)p)->hb - ((choco_t*)q)->hb;
return n;
}