为什么char a[5]="hello"也可以?

KeleQAQ 2018-05-11 08:48:12
...全文
2845 6 打赏 收藏 转发到动态 举报
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
  • 打赏
  • 举报
回复
编译器不负责任呗

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧