while(*p)

2024-11-29 18:30:25
推荐回答(3个)
回答(1):

你的 r,p,w 这些都是 指针。
声明里 char *w; char *r; 带星的是指针。
语句里 *w, *r 意思不同于声明,带星的 是指向的 值。
while(*r) {} 当 *r 的值不等于0时,为真,执行循环体。 当 *r 的值等于0时,为假,退出循环。
对char 而言,指向字符串结束符'\0' 时, '\0' 的值等于0, 为假,退出循环.
----------
if (*r==*p){r++;p++;} *r,*p 是指向的 值。
语句意思:如果( r[i] 等于 p[i]) 指针向前推一格。
原来指向的值 是 r[i],p[i], 增1后,新的指向值是 r[i+1],p[i+1].

回答(2):

while(*r) 意思是r指向的数组没到最后 就算*r=0也是字符‘0’while不会跳出循环
还有你图片贴的程序有问题if(*r=='\0')这个后面的大括号范围错了
if (*r==*p) {r++;p++;} 这个地方是s与t1进行比较 完全一样 *r才会='\0'

这个程序是实现 字符串s中出现t1的用t2替换 对吧

回答(3):

楼主把完整的程序给出来