求解释!!!!

zwg1402851639 2017-11-04 08:20:49


求解释,为啥上面这种方式只能输入四个,而下面却能输入五个
...全文
164 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵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',占一个字符
开心秋水 2017-11-05
  • 打赏
  • 举报
回复
上面那一种,系统会自动在最后面加一个'\0'

69,368

社区成员

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

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