我目前正在学习《C++ Primer》。在其中一个练习问题中,它问道:
下面的程序是做什么用的?
const char ca[] = { 'h', 'e', 'l', 'l', 'o' };
const char *cp = ca;
while (*cp)
{
cout << *cp << endl;
cp++;
}
我很高兴地理解 *cp 将继续保持为 true,直到 ca[] 数组的最后一个字符,因为该数组中没有空字符作为最后一个项目。这更多是出于我的好奇心,想知道 while 循环是什么使其变为 false。在我的计算机上似乎总是显示 19 个字符。0-4 是 hello 字符串,5-11 总是相同的,12-19 在每次执行时都会改变。
#include <iostream>
using namespace std;
int main( )
{
const char ca[ ] = { 'h', 'e', 'l', 'l', 'o'/*, '\0'*/ };
const char *cp = ca;
int count = 0;
while ( *cp )
{
// {counter} {object-pointed-to} {number-equivalent}
cout << count << "\t" << *cp << "\t" << (int)*cp << endl;
count++;
cp++;
}
return 0;
}
问题:是什么导致 while 循环无效?为什么 5-11 总是相同的字符?