0、'
'、NULL、NUL、EOF、回车、ctrl+z
在不同地方见到过上面这些字符,但总弄不明白它们之间的区别和联系:比如他们中的某些在字节层面上是否一样;什么时候可以互相代替,什么时候有差别。不用局限于我的问题上,请大家畅所欲言! 在不同地方见到过上面这些字符,
0、'\0'、NULL、NUL、EOF、回车、ctrl+z
在不同地方见到过上面这些字符,但总弄不明白它们之间的区别和联系:比如他们中的某些在字节层面上是否一样;什么时候可以互相代替,什么时候有差别。不用局限于我的问题上,请大家畅所欲言!
‘\0’字符串结尾,用来判断字符串是否结束
Ctrl+z是在cin时输入的结束符
0,NULL都是一样的,NULL只不过是个宏定义成0,一般用于指针初始化。
很受用,学习了~~~
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就是为了解决这个问题!
文件结束。。
NULL: 定义为0或0L或(void *)0,用于指示一个指针值是空,即什么都不指;
'\0': 用且只用字符串结束符;
NUL : 0x00,0值字符,可以用于结束ASCII字符串,和'\0'类似,但是在c/c++中没有定义,如果要使用的话,需要自定义为 #define NUL '\0';
EOF :通常定义为-1, 文件结束符标志,一般是ctrl+z.
嘿嘿,直接拿过来~
在不同地方见到过上面这些字符,但总弄不明白它们之间的区别和联系:比如他们中的某些在字节层面上是否一样;什么时候可以互相代替,什么时候有差别。不用局限于我的问题上,请大家畅所欲言!
11 个解决方案
#1
‘\0’字符串结尾,用来判断字符串是否结束
Ctrl+z是在cin时输入的结束符
0,NULL都是一样的,NULL只不过是个宏定义成0,一般用于指针初始化。
#3
EOF一般是用在数据中的结束,C++中还不知道有这东东。ForBase有这个,用这个做为记录的结束标记。
#4
注意区别它们的ASCII值
#5
很受用,学习了~~~
#6
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'
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
文件结束。。
#10
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,一般用于指针初始化。
Ctrl+z是在cin时输入的结束符
0,NULL都是一样的,NULL只不过是个宏定义成 0,一般用于指针初始化。
'、NULL、NUL、EOF、回车、ctrl+z
在不同地方见到过上面这些字符,但总弄不明白它们之间的区别和联系:比如他们中的某些在字节层面上是否一样;什么时候可以互相代替,什么时候有差别。不用局限于我的问题上,请大家畅所欲言! 在不同地方见到过上面这些字符,