社区
C语言
帖子详情
为什么char a[5]="hello"也可以?
KeleQAQ
2018-05-11 08:48:12
...全文
2859
6
打赏
收藏
为什么char a[5]="hello"也可以?
[图片]
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dululululu
2018-05-12
打赏
举报
回复
char 是字符型变量可以存储字符,可容纳单个字符的一种基本数据类型 char a[5] char a[5] = {'h','e','l','l','\0'};后面更者“\0”占一个字节,每一个字母都是用单个字符表示,于是字母“o"没有地址存放 char a[5]="hello"是正确的代表一个字符串,是正确形式 能达到相同目的的方式还有 char *a[5] = "hello" 定义一个char类型指针a,*符号,在定义的语句中,表示声明了一个指针的类型.
赵4老师
2018-05-12
打赏
举报
回复
为什么人走铁道也可以?
KeleQAQ
2018-05-11
打赏
举报
回复
ASCII码没有0,还是有点不清楚
KeleQAQ
2018-05-11
打赏
举报
回复
感觉6和7是矛盾,答主那个第2段话是说,比如char a[4]="abc",那 '\0' 就在a[3]上吗?@云海玉弓缘
云海玉弓缘
2018-05-11
打赏
举报
回复
首先,C语言没有字符串变量,只有字符串常量,所以字符串变量的任务就交给字符数组解决了! 字符串常量:"qwer" 这是一个字符串常量,字符串常量会在结尾加一个结束符'\0',所以这个字符串常量的实际长度为5 字符数组:char[5]; 1.首先,这个字符串数组的长度为5,这一定没问题:从c[0]到c[4]。 2.然后,这其中字符数组必须也有一个结束符号'\0',它在最后一个有意义的字符之后的一个位置(如果有意义的字符是2个的话,结束字符就在a[2]上,如果有意义的字符是3个的话,结束字符就在a[3]上) 1.char[5]={'q','w','e','r'}(正确写法,末尾自动添加结束符) 2.char[5]={'q','w','e','r'.'t'};(错误写法,编译器不会报错,输出字符串数组名的时候结尾会有烫烫烫) 3.char[]={'q','w','e','r'};(错误写法,编译器不会报错,输出字符串数组名的时候结尾会有烫烫烫,因为并不知道字符串的长度,无法推断出结束符的位置,可以理解为编译器不那么智能) 4.char[]={'q','w','e','r','\0'};(正确写法,编译器可以推断出字符串结束符号的位置) 5.char[5]="qwer";(正确写法,末尾自动添加0) 6.char[5]={"qwer"}(正确写法,末尾自动添加0) 7.char[5]="qwert"(正确写法,末尾自动添加0) 8.char[5]={"qwert"}(错误写法,编译器会报错) 9.char[]="qwer"(正确写法,结尾自动添零,推断出字符串长度) 10.char[]={"qwer"}(正确写法,结尾自动添零,推断出字符串长度) 11.char[5]; a[0]='q' a[1]='w' a[2]='e' a[3]='r' (错误写法,编译器不会报错,输出字符串数组名的时候结尾会有烫烫烫)
wang0635
2018-05-11
打赏
举报
回复
编译器不负责任呗
online_2.12-0.0.41-sources.jar
online_2.12-0.0.41-sources.jar
online_2.11-0.0.101.jar
online_2.11-0.0.101.jar
solr-plugins-0.3-javadoc.jar
solr-plugins-0.3-javadoc.jar
sbt-shuwari-mode-0.10.1-sources.jar
sbt-shuwari-mode-0.10.1-sources.jar
catboost-spark-macros_2.12-1.0.4-javadoc.jar
catboost-spark-macros_2.12-1.0.4-javadoc.jar
C语言
70,024
社区成员
243,253
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章