字符串问题
本帖最后由 乱码zzz 于 2020-3-23 14:04 编辑Qwq大家的回答没有解决我疑惑的问题,可能是我问的方法有问题我再细化一下
就是想问
①char name[] = {‘F’,’i’,’s’,’h’,’C’,’/0’} 和char name[] = {‘F’,’i’,’s’,’h’,’C’} 有没有区别
后者难道只是不规范表达的前者嘛?
②char定义的数组是一定要在末尾加/0吗
有人回答说字符串要在末尾加/0 所以char定义的数组本质上是字符串嘛?
----------------原问题
想知道
char name[] = {‘F’,’i’,’s’,’h’,’C’,’/0’} 和char name[] = {‘F’,’i’,’s’,’h’,’C’} 到底有什么区别
char定义的数组是一定要在末尾加/0吗
可以这样写:
char name[] = "FishC" 书上说:使用这种方式初始化,数组除了要存储字符串中的字符外,还要存储字符串结束标记‘\0’,这个标记是系统自动添加的,所以,数组的大小要比前面一个一个字符进行赋值时要多一个字节,用于存储字符串结束标记‘\0’。 字符串是以'\0'结尾,
你如果 char name[] = {‘F’,’i’,’s’,’h’,’C’}
然后printf("%s",name),可能会出现乱码 4goodworld 发表于 2020-3-23 13:30
字符串是以'\0'结尾,
你如果 char name[] = {‘F’,’i’,’s’,’h’,’C’}
然后printf("%s",name), ...
所以char定义的数组其实是字符串? char name[] = {‘F’,’i’,’s’,’h’,’C’,’/0’}你这样写是对的,系统会自动按照初始化列表中提供的初值个数确定数组的大小;但如果char name[] = {‘F’,’i’,’s’,’h’,’C’}这样写,系统会将name初始化为一个长度为5的数组,因为存储字符串“FishC”至少需要6个字节的存储单元,而长度声明为5时,将会因为没有多余的空间存放编译系统在数组末尾自动添加的‘/0’,而使系统无法将name当作字符串来处理,也就说这样写是错的。
但是你可以使用以下的方法更为简单的初始化字符串:
char name[]={"FishC"}
按这种方式,不必指定数组的大小,也不用纠结写不写‘/0’的问题了 这样声明后,那就没有区别了!
静态数组自动初始化为0
static char name ;
页:
[1]