关于字符数组赋初值(空字符、空格字符)

brk1985 2011-07-13 11:38:34

char strSrc4[20]="";//①空字符串,是否每个元素都为''?但调试时发现在后面使用if(strSrc4[i]==''),会出现“empty character constant”错误
char strSrc5[20]="\0";//②这个赋值语句之后,strSrc5数组的每个元素都为'\0'?


①空字符串,是否每个元素都为''?但调试时发现在后面使用if(strSrc4[i]==''),会出现“empty character constant”错误

②这个赋值语句之后,strSrc5数组的每个元素都为'\0'?

③实际使用中,""与''有用吗?字面意思是空字符串与空字符;但是空字符一般都是'\0'吧?

前几天一道笔试题的多项选择题,问哪些字符串(一个元素的,如""、"\0"、" "等)可以完成对整个字符串的每个元素赋初值,印象中只记得""、"\0"、" "3种,总共5个选项的,不知道还有哪些情况。。。
...全文
2475 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
brk1985 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 babilife 的回复:]

引用 5 楼 jxiaoshen 的回复:
会出现“empty character constant”错误
if(strSrc4[i]==' ') ''间要加个空格
strSrc4里存的都是'\0'


你如果用''编译器是取不到任何''之间的内容的,取不到内容还如何判断,所以会报错


4.{0},NULL
[/Quote]

明白了。。。还有个问题请教下,测试输出'\0'元素的时候,怎么输出的竟然是空格,不是空的吗?
至善者善之敌 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jxiaoshen 的回复:]
会出现“empty character constant”错误
if(strSrc4[i]==' ') ''间要加个空格
strSrc4里存的都是'\0'
[/Quote]

你如果用''编译器是取不到任何''之间的内容的,取不到内容还如何判断,所以会报错


4.{0},NULL
hotspring110 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
双引号,是字符串,单引号,是字符

char a = 'a';//正确
char b="a"; //错误
[/Quote]


brk1985 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 youareafatpig 的回复:]

char strSrc[20]="",里面每个元素都是‘\0‘,
[/Quote]

发现确实是,""与"\0"效果竟然一样。。。
hedy007 2011-07-13
  • 打赏
  • 举报
回复
既然是说字符数组赋值
char strSrc4[20]={0};
这样应该满足你的要求
brk1985 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 c_losed 的回复:]

1.C/C++ code
if (strSrc4[0] == 0)

2.是的
3.“”一般表示字符串 ''一般表示字符 是的
4.{0}也可以
[/Quote]

关于第1个问题,改成0确实是行了,很纳闷,为什么不能使用空字符''作为判断条件,一定得用ASCII值作为判断条件?另外,很奇怪的是,测试输出strSrc4[i]时,发现却是空格字符。
Jxiaoshen 2011-07-13
  • 打赏
  • 举报
回复
会出现“empty character constant”错误
if(strSrc4[i]==' ') ''间要加个空格
strSrc4里存的都是'\0'
youareafatpig 2011-07-13
  • 打赏
  • 举报
回复
char strSrc[20]="",里面每个元素都是‘\0‘,
pathuang68 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 c_losed 的回复:]

1.C/C++ code
if (strSrc4[0] == 0)

2.是的
3.“”一般表示字符串 ''一般表示字符 是的
4.{0}也可以
[/Quote]

解释得很好!
bdmh 2011-07-13
  • 打赏
  • 举报
回复
双引号,是字符串,单引号,是字符

char a = 'a';//正确
char b="a"; //错误
c_losed 2011-07-13
  • 打赏
  • 举报
回复
1.
if (strSrc4[0] == 0)

2.是的
3.“”一般表示字符串 ''一般表示字符 是的
4.{0}也可以
赵4老师 2011-07-13
  • 打赏
  • 举报
回复
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编并单步执行一遍不就啥都明白了吗。
(Linux或Unix下应该也可以在用GDB调试时,看每句C对应的汇编并单步执行。)
至善者善之敌 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 brk1985 的回复:]
引用 10 楼 babilife 的回复:

引用 5 楼 jxiaoshen 的回复:
会出现“empty character constant”错误
if(strSrc4[i]==' ') ''间要加个空格
strSrc4里存的都是'\0'


你如果用''编译器是取不到任何''之间的内容的,取不到内容还如何判断,所以会报错


4.{0},NULL


明白了。。……
[/Quote]
你可以查一下ASCII表,空格和空的ASCII 16进制是不一样的

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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