C语言字符串数组问题

代码如下:#include<stdio.h>main(){chara[5]="abcde";puts(a);}请问,字符串数组要在末尾加上结束符'\0'。为何,上面的代码... 代码如下:

#include <stdio.h>
main()
{
char a[5] = "abcde";

puts(a);
}

请问,字符串数组要在末尾加上结束符'\0'。为何,上面的代码,能通过编译,而且能正常运行?不是缺少一位置吗?
展开
 我来答
图卷
2011-05-22
知道答主
回答量:50
采纳率:0%
帮助的人:32.7万
展开全部
在VS2010上没通过编译,你把a[5]改成a[6]就行了,'\0'占一个空间,加'\0'是为了测定数组的长度。比如说char a[5]='ab',5个空间只有两个字符,只被占用了两个,一般人们只关心它的实际长度,2就是他的实际长度,5是物理长度,当你输入完毕系统就自动加个'\0'表示字符串结束了,统计的时候检测开始与结束的位置就可以统计出实际长度了。
百度网友569eb83
2011-05-22 · 超过41用户采纳过TA的回答
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:83.1万
展开全部
这么说吧!如果空间足够大的话,会在后面加上一个'\0',但在你这里由于空间在你赋正常值的时候满了,所以那个'\0'就不加了,但当输出的时候要识别'\0',一般情况下会输出“abcde”加乱码!因为内存中所分配的那5个字节空间后面有可能不是'\0‘字符!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DecentM
2011-05-22 · TA获得超过466个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:329万
展开全部
a是数组,不是字符串。数组里存的是abcde五个字母。
追问
就是说,这个数组中应存放六个元素。可这里只要五个位置?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
昨日的忧伤103
2011-05-22
知道答主
回答量:22
采纳率:0%
帮助的人:9.3万
展开全部
六个元素,六个位置,刚好。a[0]=a, a[1]=b , a[2]=c , a[3]=d , a[4]=e , a[5]=\n 。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式