如果字符串在C / C ++中没有NUL字符(如果编译器允许它通过),会发生什么?

Rob*_*rtS -3 c c++ string

如果字符串没有NUL字符(\ 0)并且编译器将其传递,例如带有警告,该怎么办?它对计算机和程序有何影响?

Nid*_*ger 5

编译器将使其完全合法地通过。C-String就是char数组,函数只需要\0确定数组的结尾即可,因为在大多数情况下这是未知的。

C字符串中没有终结符将导致函数无法确定字符串的结尾并输入未定义的行为。要么由于段错误导致崩溃,要么它可能从位于字符串之后的内存中读取随机字符,直到最终找到一个0字节。

因此,总而言之:将char数组作为C-String传递给需要空终止符的函数会导致未定义的行为。