Chinaunix首页 | 论坛 | 博客
  • 博客访问: 224920
  • 博文数量: 22
  • 博客积分: 847
  • 博客等级: 准尉
  • 技术积分: 325
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-02 11:08
文章存档

2012年(9)

2011年(8)

2010年(5)

我的朋友

分类: C/C++

2010-12-16 14:01:04

   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'来做为标志,判断是否读完。
 
阅读(2773) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~