【发布时间】:2017-05-08 09:15:29
【问题描述】:
为了让我更好地理解 C++ 字符串、数组和指针;我想知道:为什么我可以使用一个条件来检查索引是否达到了这样的空终止字符...
const char* myString = "Grandopolous";
for (int i = 0;;i++)
{
if (!myString[i])
break;
else
cout << myString[i];
}
所以效果很好。在这里,我改为检查字符是否等于空终止字符以外的字符,因此我希望如果不等于结果不应该为 0,并且条件应该为真。但这不起作用,我根本无法理解为什么:
const char* myString = "Grandopolous";
for (int i = 0;;i++)
{
if (myString[i])
cout << myString[i];
}
这在我的机器上不起作用并崩溃,它还会输出许多混合了奇怪符号的不可读错误消息。我认为这部分并不重要,尽管这是第一次将错误打印到我的控制台应用程序而不是调试控制台。
我提到指针的原因是因为我设法使用指针而不是数组索引语法来使条件工作,我发现它更容易阅读。
所以有人可以帮我理解为什么我的第一段代码是有效的,为什么我的第二段不是。
【问题讨论】:
-
想想这个循环应该如何终止。第一个代码示例中的任何内容都会停止循环吗?第二个呢?
-
你永远不会退出循环
-
c++:使用
std::string... -
请养成使用比“它不起作用”更多的描述性短语来描述您的问题的习惯
-
投票结束为“简单的印刷错误”。这个问题及其答案不太可能对未来的用户有所帮助。
标签: c++ string pointers null-terminated