为cstring的元素赋值

时间:2017-11-15 07:15:14

标签: c c-strings

刚刚在我的计算机科学课上学到了cstrings,它只是打击了我, 这是合法的

char ch[] = "hello";

但是,似乎我也可以分配给这个数组中的“5th”元素

ch[5] = "!";

这是允许的吗?或者我只是覆盖数组末尾的空字符?

1 个答案:

答案 0 :(得分:0)

不,不允许。正如你所说,这是在最后覆盖空字符。此时它不会导致错误,因为您正在访问有效的索引。

但是如果你试图打印字符串,那么打印功能就不知道字符串的结束位置。打印功能将继续打印字符,直到它意外地达到零字节,否则缓冲区溢出会出现严重错误。这是未定义的行为。其他字符串函数strcpystrlenstrcmp ...也会出现同样的问题,他们都依赖空字符来查找字符串的结尾。