鱼C论坛

 找回密码
 立即注册
查看: 111|回复: 8

while语句求助

[复制链接]
发表于 2022-5-14 09:33:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
各位大佬好;
请问这句 while (*target++ != '\0') 该怎么理解?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-14 09:45:44 From FishC Mobile | 显示全部楼层
"target"是字符串吗?如果是的话可以这样理解:
读取target的每个字符,直到读取到空字符"\0"为止。
(应该是对的)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2022-5-14 09:53:35 | 显示全部楼层
蔚蓝水晶 发表于 2022-5-14 09:45
"target"是字符串吗?如果是的话可以这样理解:
读取target的每个字符,直到读取到空字符"\0"为止。
(应该 ...

target是指针,一道小甲鱼的作业题,难理解的地方就在*target++这里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-14 10:34:02 | 显示全部楼层
本帖最后由 jackz007 于 2022-5-14 10:50 编辑

        这一句
  1.         while (*target++ != '\0') ;
复制代码

        先判断 * target 是否等于 '\0',然后,无论是否相等都执行 target ++,如果不相等就继续循环,否则,就结束循环。
        所以,上述语句和下面这些语句等效
  1.         for(;;) {
  2.                 target ++                        ;
  3.                 if(* (target - 1) == '\0') break ;
  4.         }
复制代码

        循环结束的时候,target 指向字符串末尾 '\0' 之后的下一个字符,而不是 '\0' 字符本身。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-14 11:08:11 | 显示全部楼层
如果target是一个字符串,那么target++就是依次访问字符串每一个字符,\0是在字符串末尾的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2022-5-14 12:16:44 | 显示全部楼层
明白了各位。*p++ = *p ;p + 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-14 13:31:53 | 显示全部楼层
tarrget应该是个字符串,字符串即指针,’\0‘是字符串的结束符,如我定义一个字符串char a[10] ="123",实际计算机是char a[10] ="123\0",遇到’\0‘就表示该字符串结束了。所以,while函数的作用是,target字符串从0开始,一直++,当元素不是结束字符时,进行循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-15 16:38:46 | 显示全部楼层
jiuyaoshifang 发表于 2022-5-14 13:31
tarrget应该是个字符串,字符串即指针,’\0‘是字符串的结束符,如我定义一个字符串char a[10] ="123",实 ...

我去网上查了一下,好像........是这么回事(开玩笑)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-15 19:50:22 | 显示全部楼层
大家好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2022-5-25 15:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表