读书人

C++中字符串指针有关问题

发布时间: 2013-04-02 12:35:26 作者: rapoo

C++中字符串指针问题
const char * st="aaaaa\n";
void main()
{
int len=0;
while(*st++)++len;
cout<<len<<":"<<st;
}

为什么不能正常输出

而把程序改成如下就可以了?
const char * st="aaaaa\n";
void main()
{
int len=0;
const char *p=st;
while(*p++)++len;
cout<<len<<":"<<st;
}
为什么会出现这种情况? c++
[解决办法]
原谅我。。。太急了
我去,上面少画了'\0'
字符串字面量:
[a] <-- 第二段程序最后st指向这里
[a]
[a]
[a]
[a]
[\n]
['\0'] <-- 第一段程序最后st指向这里,第二段程序最后p指向这里
[解决办法]
是这么回事:第一个程序,st被改变了,第二个没变。

第一个程序中
在 while(*st++)++len; 结束后,st已经指向字符串的末尾 '\0'
所以,得到的是 6:

第二个程序中,st是没有改变的,指向字符串的开头,所以最后输出为 6:aaaaa

读书人网 >C++

热点推荐