阅读背景:

关于0、'\0'、NULL、NUL、EOF、回车、ctrl+z

来源:互联网 
0、'
0、'\0'、NULL、NUL、EOF、回车、ctrl+z
在不同地方见到过上面这些字符,但总弄不明白它们之间的区别和联系:比如他们中的某些在字节层面上是否一样;什么时候可以互相代替,什么时候有差别。不用局限于我的问题上,请大家畅所欲言!

11 个解决方案

#1



‘\0’字符串结尾,用来判断字符串是否结束
Ctrl+z是在cin时输入的结束符
0,NULL都是一样的,NULL只不过是个宏定义成0,一般用于指针初始化。

#3


EOF一般是用在数据中的结束,C++中还不知道有这东东。ForBase有这个,用这个做为记录的结束标记。

#4


注意区别它们的ASCII值

#5


引用 2 楼 thefirstz 的回复:
https://hi.baidu.com/sunwater007/blog/item/f38548fb652d529059ee90e6.html


很受用,学习了~~~

#6


引用楼主 gigglesun 的回复:
0、'\0'、NULL、NUL、EOF、回车、ctrl+z
在不同地方见到过上面这些字符,但总弄不明白它们之间的区别和联系:比如他们中的某些在字节层面上是否一样;什么时候可以互相代替,什么时候有差别。不用局限于我的问题上,请大家畅所欲言!


0有很多种角色,例如整数常量、空指针常量

'\0'是ASCII码值为0的那个字符

NULL是一个宏,表示什么都没有,在C中定义为0、0L或者( void* )0,C++中则为0或0L。
很多人以为NULL就是0,把NULL和0等同起来,这是错误的,分不清什么是抽象、什么是实现。NULL表示空,但0不是空,0有东西,这个东西就是0。把NULL定义为0、0L、( void* )0等这些东西是由于没有任何东西能表示空,但又要实现这个空,于是就用0作为实现了。0是NULL的实现,但NULL不是0!

NUL是ASCII码字面符号为NUL的那个字符

EOF就是end of file,过去表示一个文件的结束,后来流概念出现之后就一般用来表示流空了

回车就是\n,但windows、linux和mac对于\n的实现是不同的,windows是\n\r,linux是\n,mac则是\r

ctrl+z,这是windows的组合键,用来通过键盘产生一个EOF信号。因为键盘也是一个流输入设备,但它与文件流有一点很大的不同,文件的内容在读到末尾的时候会自然产生EOF,但键盘不是这样,只要输入者愿意,输入的内容可以说是无穷无尽的,如何表达输入者期望的流空的信号呢?设计ctrl+z就是为了解决这个问题!

#7


'\0'的整数值就是0,用在字符串结尾。EOF一般判断文件或输入流结束的,在终端输入的时候,ctrl+z也等于EOF,回车windows是\r\n,linux是\r。NULL一般是设置指针为空的。

#8


https://www.cppblog.com/prayer/archive/2009/07/06/89375.html

NULL is a macro defined in several standard headers, 0 is an integer constant, '\0' is a character constant, and nul is the name of the character constant. All of these are *not* interchangeable:

NULL is to be used for pointers only since it may be defined as ((void *)0), this would cause problems with anything but pointers.

0 can be used anywhere, it is the generic symbol for each type's zero value and the compiler will sort things out.

'\0' should be used only in a character context.

nul is not defined in C or C++, it shouldn't be used unless you define it yourself in a suitable manner, like:

#define nul '\0'

#9


引用 3 楼 sigoyi 的回复:
EOF一般是用在数据中的结束,C++中还不知道有这东东。ForBase有这个,用这个做为记录的结束标记。


文件结束。。

#10


引用 2 楼 thefirstz 的回复:
https://hi.baidu.com/sunwater007/blog/item/f38548fb652d529059ee90e6.html

NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指;
'\0': 用且只用字符串结束符;
NUL : 0x00,0值字符,可以用于结束ASCII字符串,和'\0'类似,但是在c/c++中没有定义,如果要使用的话,需要自定义为 #define NUL '\0';
EOF :通常定义为-1, 文件结束符标志,一般是ctrl+z.

嘿嘿,直接拿过来~

#11


‘\0’字符串结尾,用来判断字符串是否结束
Ctrl+z是在cin时输入的结束符
0,NULL都是一样的,NULL只不过是个宏定义成 0,一般用于指针初始化。

'、NULL、NUL、EOF、回车、ctrl+z
在不同地方见到过上面这些字符,但总弄不明白它们之间的区别和联系:比如他们中的某些在字节层面上是否一样;什么时候可以互相代替,什么时候有差别。不用局限于我的问题上,请大家畅所欲言! 在不同地方见到过上面这些字符,



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: