我正在尝试提高编程技能,并且在我的课本中尝试了该练习。我想在这里问一个问题:
char strng[] = " Hooray for All of Us ";
char *messPt;
messPt = &strng[0];
for(int i=0;i<20;i++)
cout << *(messPt + i) << " ";
cout << endl;
messPt = strng;
while(*messPt++!= '\0')
cout << *messPt ;
cout << endl;
这是输出:
H o o r a y f o r A l l o f U
Hooray for All of Us
我的问题是:
第二个输出如下所示:ooray for Us of
提前致谢 :)
最佳答案
这是因为在while循环的条件下测试是否到达字符串末尾时,将递增messPt
:
while(*messPt++ != '\0') // tests *messPt = '\0' and also advances messPt by one
cout << *messPt ;
您可以将其重构为:
while(*messPt != '\0')
{
cout << *messPt ;
messPt++;
}
或者,如果您热衷于聪明,可以将其更改为:
while(*messPt != 0)
cout << *messPt++;
有时
++
运算符可能会导致许多隐藏的错误。这就是为什么有人认为应该谨慎使用它的原因。