【发布时间】:2014-06-19 12:03:49
【问题描述】:
strlen() 被 null 终止,对吗?那么 char c[]={'1','1'} 和 char d[]={'1','1','\0'} 为什么在 strlen(c) 和 strlen (d) 被使用?
【问题讨论】:
-
\0是字符串终止不为空的符号 -
c数组中的第二个元素之后的内存中可能恰好有一个 0。 -
@AlexandruCimpanu C99 标准 将字符串称为“空终止”(例如 p303)。 OP 指的是空字符,而您可能正在考虑空指针或
NULL(不保证是指针)。 -
@Pascal Cuoq 是的,但这并不意味着您可以使用
NULL代替\0。\0是空终止符。从这个问题我推断他不知道NULL和\0之间的区别或者相似之处。 -
@AlexandruCimpanu 您的建议“......是字符串终止的符号不是空的”比在问题中使用“由空终止”作为“空终止”的小错误更令人困惑。您正在纠正一个 OP 没有犯的错误,并且您以一种与 C 标准中使用方式不相符的奇怪方式使用“null”一词。