c++ - 在 C++ 中用未知元素初始化的 char 数组

标签 c++ arrays string loops char

<分区>

这是我的代码:

const char ca[] = {'h','e','l','l','o'};
const char* cp = ca;
while(*cp){
    std::cout<<*cp<<" ";
    ++cp;
}

输出:

h e l l o  `

为什么数组末尾有一些char值?

最佳答案

您正在调用未定义的行为,因为您这样做:

const char ca[] = {'h','e','l','l','o'};
const char* cp = ca;
while(*cp) {

没有null 终止符 附加到您的字符串。结果,您越界了,这意味着您正在访问不属于该数组的内存,因此您会看到非预期的字符。

要添加空终止符,只需执行以下操作:

const char ca[] = {'h','e','l','l','o', '\0'};

好读:How dangerous is it to access an array out of bounds?

关于c++ - 在 C++ 中用未知元素初始化的 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44144575/

相关文章:

c++ - IE状态栏。我需要在状态栏上添加一个可点击的图标

c++ - 如何解决此 "cast to pointer from type of different size"警告?

javascript - 如何使用递归将一个对象转换为另一个对象。 Javascript

javascript - 如何删除所有其他字符串,但数组中包含 "metal"的字符串

objective-c - 在大型 NSString 中有效地找到许多关键字中的第一个

performance - 这里可以避免使用 CURSOR 吗?

c++ - 隐藏私有(private)数据成员? (C++)

java - 我可以封装同一个类的对象之间的成员吗?

arrays - 我可以在 Powershell 中创建函数数组吗?

php - 在数组php中随机播放