C 关于字符数组的长度

字符数组如果写成字符串的形式,数组的长度是原来的长度+1,为什么定义成原来的长度不会出错?如:charc[5]={"china"};这样如果逐个输出还可以正确输出;朋友们... 字符数组如果写成字符串的形式,数组的长度是原来的长度+1,为什么定义成原来的长度不会出错?如:char c[5]={"china"}; 这样如果逐个输出还可以正确输出;
朋友们帮着分析下,最好解释详细点吧,谢谢!
但是 char c[5]={"china"}相当于char c[5]={'c','h','i','n','a','\0'}; 这样的话就是六个字符,虽然输出的时候没使用最后一个字符,而定义时只定义了五个,这个不是定义就有错误吗?为什么不是下标越界?
展开
 我来答
百度网友83e2accf0
2011-03-29
知道答主
回答量:21
采纳率:0%
帮助的人:11.6万
展开全部
+1是‘\0’代表字符串结束,逐个字符输出当然不会出错,因为使用下标不需要使用结束标志。
如果像下面这样就会出错了,原因在于没有字符结束标志。
#include "stdio.h"
void main(void)
{
char a[5]="hello";
printf("%s\n",a);
}
追问
但是 char c[5]={"china"}相当于char c[5]={'c','h','i','n','a','\0'}; 这样的话就是六个字符,虽然输出的时候没使用最后一个字符,而定义时只定义了五个,这个不是定义就有错误吗?为什么不是下标越界?
追答
char c[5]={"china"}相当于char c[5]={'c','h','i','n','a','\0'} 这句话不对
char c[5]={"china"}相当于char c[5]={'c','h','i','n','a'}
char c[6]={"china"}相当于char c[6]={'c','h','i','n','a','\0'}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式