c语言,EOF,NULL是什么意思,这些属于什么?表示看完谭浩强的c语言程序设计没见过

如题所述

计算机术语,缩写通常为EOF(End Of File),在操作系统中表示资料源无更多的资料可读取。资料源通常称为档案或串流。在C语言中,或更精确地说成C标准函数库中表示文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。
C语言中,EOF常被作为文件结束的标志。还有很多文件处理函数处错误后的返回值也是EOF,因此常被用来判断调用一个函数是否成功。
例如:
#include <stdio.h>
int main(void)
{
int n;
int array[25];
while (scanf("%d",&n),n!=EOF) //while(scanf("%d",&n)!=EOF)也行
{
for (int i=0; i<n; i++)
scanf("%d",array+i);
for (i=0; i<n; i++)
printf ("%d ",array[i]);
}
return 0;
}
在ASCII码的第一个字符是NULL,它的数值是0,占用1字节;C语言把它作为字符串的最后一个字符,以表示字符串到此结束."\0"
可见,NULL指针是一个无类型指针,并且值为0。一个指针,拥有2个属性--地址值和指针类型。两者的作用是:1,地址值标识变量的首地址(32位系统下指针的地址值占4字节);2,指针类型告诉编译器,应该怎样进行接下来的数据访问(int型数组和float型数组是不同的;数组访问与结构体访问也是不同的;等等)。
NULL的出现是一种约定俗成,事实上它不是C语言中的关键字;把一个指针赋值为NULL,通常的说法是“将指针悬空”。这样,指针就无法再进行任何数据访问了。编程工作中有一类比较容易犯的错误--指针地址未进行正确的更新赋值就加以使用,这往往会造成很严重的后果(对内存区进行错误的涂抹)。所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为NULL,待到再度使用时,重新对其赋值以及进行指针类型转化。
前面说到“NULL指针无法再进行任何数据访问”,其实是视编译器功能而定的。0位置指向的是程序起始,对于不同的编译器,NULL指针的操作结果是不同的:有些是不准读写,有些是只读,甚至读写都允许。编译器是人定的。引用网友win_hate在话题“关于NULL的不严谨”中的话来说:“如果说有谁不严谨了,那必定是读取0位置的程序员,而不是C。C的设计哲学之一是:‘程序员知道自己在干什么--没有安全带’”。追问

那EOF NULL这类大写字母属于什么

追答

他们在C语言设计中算是一个独有的变量,不管大写小写,一旦这样写出,那他的意思就是确定的了,就是已经如上文设定好的定义了。

追问

一个ascii码不是占一个字节吗,如果ascii是0~255,那么-1怎么用0和1表示

还有类似EOF NULL的东西了吗

追答

不过ASCII码跟二进制表示似乎没有什么关系吧,ASCII码是一个规定,实质上C语言里面所有的数据都是以2进制的补码存储的,设0是0000 0000,非0就是1111 1111;符号位是1,表明是负数,是按补码存储的。减一取反就得到其绝对值的原码。
1111 1111 ----(减一) = 1111 1110 -----(取反) = 0000 0001。
其绝对值为1,又是负数,所以为负1。
额,至于有没有其他类似的东西,一时半会我还真想不出来,建议你以后遇到了可以查一查,到时候再问问老师。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-12
看过老谭的书,你是不是在用scanf时用到了?代表输入不是空
相似回答