请教一道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 "输出的是指针所指的值,而不是指针所指的地址
[解决办法]
< < 运算符对于字符串的 是例外 输出首地址就是输出字符串
