<分区>
这是我的代码:
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){
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'};
关于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++)