解释下,越细越好

LZS535261548 2011-05-24 11:22:39
#include "stdafx.h"
#include <iostream>
using namespace std;
const char *st = "The expense of spirit\n";
int main()
{
int len = 0;
while ( st++ )
{
++len;
}
cout << len << "; " << st;
return 0;
}

const char *st = "The expense of spirit\n";
const char *p = st;
int main()
{
int len = 0;
while ( p++ )
{
++len;
}
cout << len << "; " << st;
return 0;
}
第一个是错误,第二个可以,不懂为什么
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
野男孩 2011-05-25
  • 打赏
  • 举报
回复
第二个可以啥??
fq8345893371 2011-05-24
  • 打赏
  • 举报
回复
2个都可以啊,不过2个都进入死循环。
while ( *p!='\0' )
{
len++;p++;
}
downmooner 2011-05-24
  • 打赏
  • 举报
回复
笔误 是 '\0'
winginsky 2011-05-24
  • 打赏
  • 举报
回复
你写的两个程序都是死循环。
第一个程序

while ( st++ ) //你本意是想当指针指向字符串末尾之后,退出循环,
// 但你这种做法的意义是当指针为空时,循环退出
{
++len;
}

你应该判断指针指向的值是否是字符串结束符 while(*st++!='0')

downmooner 2011-05-24
  • 打赏
  • 举报
回复
第1个也是错的,也要while ( *st++ )

因为是根据最后的结尾符‘0’来停止循环的
xspace_time 2011-05-24
  • 打赏
  • 举报
回复
也不是很清楚
只知道st被自动转化成了const char const *st="The expense of spirit\n";
const *st是指针常量,是不可以移动的

downmooner 2011-05-24
  • 打赏
  • 举报
回复
while ( *p++ ) 

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧