鱼C论坛

 找回密码
 立即注册
查看: 709|回复: 6

[已解决]字符串问题

[复制链接]
发表于 2020-3-23 12:57:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 乱码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吗

最佳答案
2020-3-23 14:14:06
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’的问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-23 13:10:21 | 显示全部楼层
可以这样写:
char name[] = "FishC"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 13:23:48 | 显示全部楼层
书上说:使用这种方式初始化,数组除了要存储字符串中的字符外,还要存储字符串结束标记‘\0’,这个标记是系统自动添加的,所以,数组的大小要比前面一个一个字符进行赋值时要多一个字节,用于存储字符串结束标记‘\0’。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 13:30:46 | 显示全部楼层
字符串是以'\0'结尾,
你如果 char name[] = {‘F’,’i’,’s’,’h’,’C’}
然后printf("%s",name),可能会出现乱码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-23 14:05:36 | 显示全部楼层
4goodworld 发表于 2020-3-23 13:30
字符串是以'\0'结尾,
你如果 char name[] = {‘F’,’i’,’s’,’h’,’C’}
然后printf("%s",name), ...

所以char定义的数组  其实是字符串?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 14:14:06 | 显示全部楼层    本楼为最佳答案   
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’的问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 14:15:45 | 显示全部楼层
这样声明后,那就没有区别了!
静态数组自动初始化为0
static char name[size] ;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 17:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表