关于EOF和NULL
时间:2010-12-16 来源:paixian1987
1、关于EOF
End Of File,在计算机术语缩写通常为 EOF。
在 C语言,或更精确地说成 C标准函式库,文件或其它 I/O 功能可能传回等于象征符号值 EOF 指示文件结束的情形发生。实际上 EOF 的值通常为 -1,但它依系统有所不同。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
2、关于NULL
首先,在C语言的头文件stddef.h中,NULL的定义如下:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
上面代码的意思是,如果没有定义NULL,则下面定义它。如果是C++程序,则将NULL定义为0。如果是C程序,则定义为指向地址0的空指针(void *)0。
把地址0转换成指针类型,称为空指针,它的特殊之处在于,操作系统不会把任何数据保存在地址0及其附近,也不会把地址0~0xfff的页面映射到物理内存,所以任何对地址0的访问都会立刻导致段错误。*p = 0;会导致段错误,就像放在眼前的炸弹一样很容易找到,相比之下,野指针的错误就像埋下地雷一样,更难发现和排除,这次走过去没事,下次走过去就有事。
由此可以理解NULL可以作为一个指针类型函数的返回值。
另外,在ASCII码表中,第一个字符便是NULL,它的十六机制数值表示是00。即字符'\0'。在字符串函数中,通常在末尾插入NULL(即'\0')表示字符串的已经结束。读字符串时,一般也以'\0'来做为标志,判断是否读完。
相关阅读 更多 +