vc 用char给数组初始化字符串时后面的方括号里的数字怎么理解

初始化字符和字符串的说一下,用一维数组和二维数组的也说一下
一维的我知道方括号可以不写,但如果初始化字符串时,方括号里的一定要写的话,是多少,举个例吧

第1个回答  推荐于2016-09-09
我来回答
char a[10]={‘a','b','c','d','e','f','g','h','i''}是字符数组,能存放10个字符
它不是常量

char a[10]=”abcefghi“ 这个是常量字符串,在字符最后位置自动加上'\0'
最多能存放9个字符追问

这么说char a[5]="abcdef" 是错的了?
可老师说char a[10]={‘a','b','c','d','e','f','g','h','i''}要自己在最后加个'\0',因为系统不会自动追加的,这么说的话,在使用上,两者是一样的,只是后者简单点,是这样吗?
后面初始化可以空着吗,就是想 char a[10]={‘a','b',’\0'} 这样的,可以吗?

追答

是错误的,越界了,你定义的a组只能容纳5个字符,除去'\0'只有4个,

char a[10]="abcdef"
char b[10]={‘a','b','c','d','e','f','g','h','i''}
两者是不一样的,注意char a[10]="abcdef"是字符串常量,定义完了后再使用a=“sdsd”就会报错
但是a[0]='a'没有问题

char b[10]没有限制定义完了可以重新再改变值;

另外使用c中printf函数输出的时候使用%s输出,这个时候'\0'重要,因为它是字符串结束的标志,

char a[3]={'a','b','v'},没有问题也能编译通过,但是printf("%s",a)输出后发现输出abc还有乱码字符,因为没有'\0'结束系统不知道什么时候结束,所以除了abv还有乱码,所以我们后面一定加上
\0.char a[3]只能存储2个字符。我们后面学习关于字符串拷贝,求长都是以\0'作为字符串结束标志,所以我们一定要加上'\0'

至于你说的单独输出的话是一样的,字符串本身的就是字符数组

本回答被提问者采纳
第2个回答  2012-05-02
方括号里的数字代表你所定义字符数组所包含的容量大小追问

那例如 char a[5]="abcdef",是对还是错?
还有 char a[10]={"a","b","c"} 和 char a[10]=”abc“ 又有什么不同?

追答

char a[10]={"a","b","c"} 是错误的写法,因为你定义的是一维数组,而后面花括号里写的确是二维的,即三行一列。

追问

你都没回答我第一个问题,
第二个我写错了char a[10]={‘a','b','c','d','e','f','g','h','i','\0'},本来是想省略写的,我的意思是 char a[10]={‘a','b','c','d','e','f','g','h','i','\0'}和char a[10]=”abcefghi“ 有什么不一样,输出好像一样吧。
求求你帮个忙好吗,满意有高分的

相似回答