C++:像这样的for循环如何工作(使用指针)?

Blu*_*sul 2 c++ pointers for-loop

我刚刚在参考书中看到了这个循环,但是我不确定比较中发生了什么,因为它只是一个单独的指针.

char input[300], *p, *q[300], **r = q;
cin.getline(input, 300);
for (p = input; *p; p++)
Run Code Online (Sandbox Code Playgroud)

它会如何工作?

Seb*_*ann 5

input是一个以null结尾的字符串.cin.getline0在读取字符串的最后一个字符后面放置一个,或者input[299]如果该行超过299个字符.

char值被隐含地转换为布尔值.如果它不为零则变为真,如果它为零则变为假.因此循环条件相当于*p != 0.

因此,循环将遍历数组,直到它遇到零,即字符串的结尾.