ASCII空字符

5

ASCII仅适用于字符。 NULL不是一个字符,那么为什么NULL具有ASCII值0。


3
在没有 NUL 的情况下,您无法实现以空字符结尾的字符串。在该上下文中,它作为 sentinel 值使用。 - David Heffernan
1个回答

20

ASCII仅适用于[可打印的]字符

不完全正确:除了可打印字符外,ASCII还包括许多控制字符。

ASCII码0(NUL)就是这样一个控制字符。

引用Wikipedia的话:

ASCII保留前32个代码(数字0-31十进制)用于控制字符:这些代码最初不是用来表示可打印信息的,而是用来控制使用ASCII的设备(如打印机),或者提供有关存储在磁带上的数据流的元信息。例如,字符10表示“换行”功能(导致打印机推进其纸张),字符8表示“退格”。

如今,NUL字符最常用于表示C中字符字符串的结尾。然而,它最初的目的是不同的

这个字符最初的意义类似于NOP——当发送到打印机或终端时,它什么也不做(但是一些终端会错误地显示为空格)。在使用电机械式电传打字机作为计算机输出设备时,在每行末尾发送一个或多个空字符,以便机械装置有足够时间返回下一行的第一个打印位置。在穿孔纸带上,该字符表示为完全没有孔洞,因此新的未穿孔纸带最初填充了空字符,并且通常可以通过将新字符打入空字符覆盖掉来“插入”保留空字符的文本。

抱歉,我没有完全理解您的意思。 - Abhinav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接