求解释!!!!

zwg1402851639 2017-11-04 08:20:49


求解释,为啥上面这种方式只能输入四个,而下面却能输入五个
...全文
138 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
赵4老师 2017-11-06
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
  • 打赏
  • 举报
回复
零隐 2017-11-06
上面是常量的字符串赋值,默认都判定的。 下面是单个字符赋值,如果你赋值‘\0’,肯定不会报错。 所以上面是字符串赋值,下面是字符赋值,层级不一样,判定也不一样。
  • 打赏
  • 举报
回复
陪妳看星星 2017-11-06
在VS中按F9添加断点,按F5进行调试。查看监视和内存就很清楚了。

  • 打赏
  • 举报
回复
自信男孩 2017-11-06
怎么输出? 第一个数组是有4个字符,第二个数组有5个字符,若用循环%c输出,那么都能输出5个字符,(第一个数组的a[4]是'\0'无法显现到终端) 但是,若以%s输出,那么第二个数组不是字符串,而是字符数组;所以以%s输出,第二个数组是会越界的。
  • 打赏
  • 举报
回复
destory27 2017-11-05
字符串和字符数组 分别sizeof 和 strlen 看看
  • 打赏
  • 举报
回复
Intel0011 2017-11-05
char b[5] = "abcd"; // 编译器转化为char b[5] = { 'a', 'b', 'c', 'd', '\0' }; b可以作为字符串使用,因为有结尾符'\0'
char a[5] = { 'a', 'b', 'c', 'd', 'e' }; //因为没有'\0',所以不能作为字符串使用
  • 打赏
  • 举报
回复
Canceled_bdflyao 2017-11-05
上面是以字符串形式保存的,字符串末尾会有'\0',占一个字符
  • 打赏
  • 举报
回复
baidu_37097818 2017-11-05
上面那一种,系统会自动在最后面加一个'\0'
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 小灸舞
申请成为版主
帖子事件
创建了帖子
2017-11-04 08:20
社区公告
暂无公告