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

时间:2017-05-23 20:38:52

标签: 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值?

2 个答案:

答案 0 :(得分:2)

您正在调用未定义的行为,因为您执行了以下操作:

.

没有将 null终结符附加到您的字符串中。因此,您将超出界限,这意味着您正在访问不属于该数组的内存,因此您看到的是非预期的角色。

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

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

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

答案 1 :(得分:0)

您应该将$rawData作为数组中的最后一个元素,否则'\0'始终为true,直到巧合遇到null终结符while(*cp)

尝试:

'\0'