返回信息流如下程序:
int main()
{
//define stomething......
char * p ="abcdefghaab";
//do something.......
while(*p)//这句话是什么意思,这样用也可以么?
{
//do something
p++;
}
//do something
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / soft-design / #22949同步于 2007/12/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
关于while(*p)
merrylife
2007/12/11镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
想不明白为什么这样用,如果要表现无限循环,则用while(1)不更好?
再说p++一直下去,如果不加处理*p就为为"\0",莫非是(*p="\0")==0会成立?为什么?
while(*p != 0)
【 在 merrylife (Delia) 的大作中提到: 】
: 标 题: 关于while(*p)
: 发信站: 北邮人论坛 (Tue Dec 11 09:57:08 2007), 站内
:
: 如下程序:
: int main()
: {
: //define stomething......
: char * p ="abcdefghaab";
: //do something.......
:
: while(*p)//这句话是什么意思,这样用也可以么?
: {
: //do something
: p++;
: }
: //do something
: return 0;
:
: }
: --
:
: ※ 来源:·北邮人论坛 http://forum.byr.edu.cn·[FROM: 59.64.197.*]
不是无限循环。
循环体中有个p++,也就是沿地址挨个找下去,直到p指向末端为止。
【 在 merrylife (Delia) 的大作中提到: 】
: 想不明白为什么这样用,如果要表现无限循环,则用while(1)不更好?
: 再说p++一直下去,如果不加处理*p就为为"\0",莫非是(*p="\0")==0会成立?为什么?
char * p ="abcdefghaab";
上面语句会在p所指向的字符串后面加上一个'\0',内容就是0(就是ascii码的0,在内存中存储的就是一个为零的字节),即当p指向字符串最后一个字符‘b’的后面的地址时 *p=0,用while(*p)来判断字符串是否结束。
能够偷懒就偷懒,这是C的原则之一
比如,你可以在很多时候把int省略,如unsigned int中的int可以省略等等
【 在 yueyingcs (Loli村元老村长) 的大作中提到: 】
: C语言很偷懒.....嗯