NULL 和EOF的区别
NULL 和EOF的定义
EOF定义
stdio.h
…
#ifndef EOF
# define EOF (-1)
#endif
…
NULL定义
stddef.h 文件
。。。
/* A null pointer constant. */
#if defined (_STDDEF_H) || defined(__need_NULL)
#undef NULL /* in case <stdio.h> hasdefined it. */
#ifdef __GNUG__
#define NULL __null
#else /* G++ */
#ifndef __cplusplus
#define NULL ((void *)0)
#else /* C++ */
#define NULL 0
#endif /* C++ */
#endif /* G++ */
#endif /* NULL not defined and <stddef.h> or need NULL. */
#undef __need_NULL
。。。
总结不同点
1)EOF 值为 -1。NULL值在C++中为0,非C++中是一个空指针,即指针变量值为空。
2)EOF常用于文件操作出错时的判断条件(有的函数(man fputc)出错返回EOF、读到文件的末尾也返回EOF)。NULL常用于判断指针是否为空。