NULL如何终止?

时间:2017-10-04 23:46:56

标签: c string null null-terminated

查看下面的声明

const char REASON_POR = "POR";

问题是,为什么REASON_POR会被NULL终止?

3 个答案:

答案 0 :(得分:1)

此:

const char REASON_POR = "POR";

错误,因为REASON_PORchar类型的常量,并且您要为其指定一个字符串,而您应该只指定一个字符,例如'P'。

严格地说,C中没有赋值字符串,而只能指定带有char字符的指针(如果是字符串)。 *

将(字符串的)指针指定给char会调用未定义的行为

* 此规则只有一个例外 - 初始化char表(或一般的任何其他表或结构):char str[]="foo";其中正在复制实际字符串。

答案 1 :(得分:0)

字符串文字由语言定义,最后有一个nul字节。这就是4等于3而不是{{1}}的原因。当编译器在输出二进制文件中生成字符串文字时,它会安排nul字节存在。

答案 2 :(得分:0)

如果我不得不猜测为什么C中的字符串是空终止的,那可能是因为Dennis Ritchie认为能够识别字符串的结尾是个好主意。许多便利功能都可以使用此功能,例如strlen