关于for循环中的指针控制

麦客吧 2019-09-11 06:25:54
#include<stdio.h>
int main()
{
char *s=“ this is a number”
for(; *s; s++)
.................}
请问*s是怎么控制循环的
...全文
1101 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzw_rxqn 2019-09-13
  • 打赏
  • 举报
回复
字符串最后以'\0'结尾,系统会默认补充,题主在给声明赋值时结尾加; 循环条件怎么控制看题主具体需求,看题主意图应该是想索引整个字符串,那判断条件就是 *s != '\0'
棉猴 2019-09-12
  • 打赏
  • 举报
回复
《C++Primer第五版中文版》中提到
操作符*叫做解引用符,如果指针指向了一个对象,则允许使用解引用符来访问该对象。对指针解引用会得出所指向的对象
在你的代码中,s是指针,*s就是对s进行解引用,得到s所指向的内容,即字符串“ this is a number”中的字符,而s++是对指针进行移位操作,将指针移动到字符串的下一个字符中。所以,for语句的作用是遍历字符串“ this is a number”中的字符,直到*s的内容是空为之,退出for循环。
通信小卒 2019-09-12
  • 打赏
  • 举报
回复
字符串最后一个'\0',你的判断条件*s!='\0'就行
自信男孩 2019-09-11
  • 打赏
  • 举报
回复
引用 2 楼 wowpH 的回复:
[quote=引用 1 楼 自信男孩的回复:]s++是向后移动位置(地址),*s是去对应地址里的数值。
举个例子,第一次判断*s即't' == 0?,为真执行循环体,s++,此时s指向了'h',判断*s,即'h' == 0?
继续执行,以此类推~

为假,才执行循环体吧[/quote]
哦,应该是*s != 0
wowpH 2019-09-11
  • 打赏
  • 举报
回复
引用 1 楼 自信男孩的回复:
s++是向后移动位置(地址),*s是去对应地址里的数值。
举个例子,第一次判断*s即't' == 0?,为真执行循环体,s++,此时s指向了'h',判断*s,即'h' == 0?
继续执行,以此类推~
为假,才执行循环体吧
自信男孩 2019-09-11
  • 打赏
  • 举报
回复
s++是向后移动位置(地址),*s是去对应地址里的数值。
举个例子,第一次判断*s即't' == 0?,为真执行循环体,s++,此时s指向了'h',判断*s,即'h' == 0?
继续执行,以此类推~

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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