A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wodeheimalife 中级黑马   /  2015-4-23 10:24  /  1202 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在字符数组中  比如 char  a [5]= {‘a’,‘b’,‘c’,‘d’,‘e’};
对不?  不是每个字符串后面都默认一个‘\0’吗?  那不是应该是char  a  [6]; 才对吗?

6 个回复

倒序浏览
不是每个字符后面都有'\0' 是整个字符数组后面只有一个'\0'作为结束符 你字符有几个 你就定义几个 不用管'\0'的存在
回复 使用道具 举报
字符串和字符数组不是一个概念,字符串通常是用字符数组来存储的!你写这个char  a[5]={‘a’,‘b’,‘c’,‘d’,‘e’},我可以认为他是一个字符数组 并不是字符串,字符串应该是 char a[5]=“abcde”, 这个字符数组存储的才是字符串,而 “abcde”={‘a’,‘b’,‘c’,‘d’,’e’,'\0’},另外char  a[5]={‘a’,‘b’,‘c’,‘d’,‘e’}这个括号中得5是可以省略掉得,当然你写char  a[5]={‘a’,‘b’,‘c’,‘d’,’e’,’\0’} 系统其实会发出警告的,你要是用字符数组来存储一个字符串 应该写char a[5]=“abcde”
我写的有点乱 不知道你能不能知道我的意思!
回复 使用道具 举报
字符数组的话就对着,确实是每个字符串在内存中存储后面都有一个\0,你写的那个只能存储字符数组,不能存字符串,因为内存不够,编译器会报错
回复 使用道具 举报
其实打印出来看看就知道啦,楼上我试了下 char a[5]=“abcde” 应该是不行的,因为'\0'也要占一个位置。
我打出来看了看,结果是这样
回复 使用道具 举报
人生充满期待 发表于 2015-4-23 14:44
字符串和字符数组不是一个概念,字符串通常是用字符数组来存储的!你写这个char  a[5]={‘a’,‘b’,‘c’, ...

其实我是有点晕的。。。{:3_62:}
回复 使用道具 举报
凌乱 中级黑马 2015-4-25 09:36:23
7#
单引号不是字符?双引号才是字符串吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马