关于EOF和NULL

转自:http://blog.chinaunix.net/uid-24856020-id-2559036.html

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’来做为标志,判断是否读完。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值