蒙的咯 strlen输出的到底是啥……

redhumor 2009-07-10 11:11:22
	char *b;
b=(char*)malloc(4*sizeof(char));//我是申请了4个Byte空间不……
printf("%d\n",strlen(b));//这个打印出的长度是17……


为啥啊 为啥啊 啊啊 啊啊 我崩溃了……
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liaoweixiaoyu 2009-07-10
  • 打赏
  • 举报
回复
.......
redhumor 2009-07-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 goodname 的回复:]
strlen计算是以找到'\0'为结束符来统计个数的。
你用malloc申请到的空间内的字符是随机的。
所以你的printf是随机数。
[/Quote]
好像理解了 哈哈 谢谢 诶 我真浪费 20分…… 早知道 就出一分了
大前置 2009-07-10
  • 打赏
  • 举报
回复
b没有初化

strlen是求字符串长度,遇到内存'\0'的才中此,可以看一下,第17位的内容
redhumor 2009-07-10
  • 打赏
  • 举报
回复
我明明只申请了4个字节的空间啊 为啥查看长度是17个字节啊?……
goodname 2009-07-10
  • 打赏
  • 举报
回复
strlen计算是以找到'\0'为结束符来统计个数的。
你用malloc申请到的空间内的字符是随机的。
所以你的printf是随机数。
crazystock 2009-07-10
  • 打赏
  • 举报
回复
没有初始化,动态申请的内存中有脏数据

70,037

社区成员

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

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