请问一道C++试题!

请教一道C++试题!!#include iostream.h#include string.hmain(){chars[] 9876 ,*pfor(psp s+2

请教一道C++试题!!
#include <iostream.h>  
#include <string.h>  
main()  
{  
char   s[]= "9876 ",*p;  
for(p=s;p <s+2;p++)  
cout < <p < < "   ";  
}

结果是:9876   876

不理解!P不是存放的地址吗?请高手给解析一下!

谢了!


[解决办法]
char *不只是“指针”这一种含义。对cout,它优先作“字符串”解释,相当于printf的%s
[解决办法]
p是指向字符串的指针,会从当前指定位置输出到遇到‘\0 '为止
[解决办法]

例如:
for(p=s;p <s+4;p++)
cout < <p < < " ";

Time 1: p = s[0]; 打印p得到 9876
Time 2: p = s[1]; 打印p得到 876
Time 3: p = s[2]; 打印p得到 76
Time 4: p = s[3]; 打印p得到 6
[解决办法]
"cout < <p "输出的是指针所指的值,而不是指针所指的地址

[解决办法]
< < 运算符对于字符串的 是例外 输出首地址就是输出字符串