for循环包括指针

Van*_*827 3 c++ pointers

我尝试使用指针输出字符串"Hello".这是代码

char s[] = "Hello";  
char * p;
for( p = s; p[0]; ++ p )     
    cout << * p;
return 0;
Run Code Online (Sandbox Code Playgroud)

我不明白为什么p[0]for循环可以工作.

Bar*_*icz 10

p[0]*p在这种情况下完全等同于.它将'\0'在数组的末尾进行求值,这意味着数值为0,然后将其转换为false值并停止循环.

  • 是的,这是一个非常复杂的拼写`*p`的方法,我认为它在语义上是不正确的,因为p实际上不是一个数组.我想象编译器会在一些迂腐的环境中警告它. (4认同)