新手请教,结果为什么是6

Cervisia 2016-11-02 11:57:58
char ch[]="45678";
printf("%d\n", (int)(sizeof(ch)/sizeof(ch[0])));
怎么获取到准确的长度?
...全文
289 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuheng110 2016-11-09
  • 打赏
  • 举报
回复
因为是"" 字符串,那么末尾还有一个'\0'字符
AlbertS 2016-11-02
  • 打赏
  • 举报
回复
AlbertS 2016-11-02
  • 打赏
  • 举报
回复
以为结尾会有一个'\0'表示结束的字符啊,正好6个
ipqtjmqj 2016-11-02
  • 打赏
  • 举报
回复
strlen,结果是5 用引号的是字符数组,会自动在末尾增加一个'\0'用作结尾标志,所以是6
IsBeginner 2016-11-02
  • 打赏
  • 举报
回复
sizeof(ch) = 6; sizeof(ch[0]) = 1; 所以结果是6。
NoEdUl 2016-11-02
  • 打赏
  • 举报
回复
sizeof是告诉你占了多少个内存空间 而你要的是元素个数。 就像楼上各位说的,数组最后会有一个结束符,这个结束符也占用了一个内存空间。
paschen 2016-11-02
  • 打赏
  • 举报
回复
因籽还包括了字符串结尾的 '\0' 字符 用strlen可以
gh_99 2016-11-02
  • 打赏
  • 举报
回复
char ch[]={'4','5','6','7','8'}; //此时为5

70,020

社区成员

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

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