【发布时间】:2017-05-23 20:38:52
【问题描述】:
这是我的代码:
const char ca[] = {'h','e','l','l','o'};
const char* cp = ca;
while(*cp){
std::cout<<*cp<<" ";
++cp;
}
输出:
h e l l o `
为什么数组末尾有一些 char 值?
【问题讨论】:
-
超出范围,在数组末尾添加
\0字符... -
当您编写
{'h','e','l','l','o'}而不是"hello"时,编译器不会为您添加“nul 终止符”。 -
在不添加 '\0' 的情况下遍历该 char 数组:
for(size_t i = 0; i < sizeof(ca)/sizeof(ca[0]); ++i){ std::cout << ca[i] << ' '; } -
如果你能用C++11那就更简单了:
for(auto c: ca){ std::cout << c << ' '; }
标签: c++ arrays string loops char