在这种情况下,while 循环如何工作

How does the while loop works in this case?

本文关键字:工作 何工作 这种情况下 while 循环      更新时间:2023-10-16

此代码将打印一串字符:

const char* aString = "This is a string";
const char* ptrString = aString;
while(*ptrString)
{   std::cout << *ptrString;
    ptrString++;
}

我还是个新手。从我目前所学到的知识来看,while 循环在括号内总是有一个条件,比如 while(x<10( 或其他东西。我只是不明白为什么在这种情况下 while 循环只有 *ptrString 作为其条件。这实际上意味着什么?有人可以向我解释吗?

当指针到达字符串的末尾时,它会找到一个字符串字符的结尾,其值为 0,当转换为布尔值时,其计算结果为 false。然后循环结束。

while(*ptrString)

*ptrString为空字符时,它将停止。随着ptrStringptrString++;中递增,最终*ptrString将指向空字符。

您可以将环体简化为

std::cout << *ptrString++; // Ideal use of post-fix operator

虽然。。