2011-05-10 77 views
0
char short_string[] = "abc" 
char short_string[] = {'a', 'b', 'c'} 

我认为不同的是,第二行是一个switch语句,它需要用户输入(ab或c,因为第一行更多是一个语句....是吗?使用字符串文字和不同字符列表初始化数组声明时有什么区别?

+7

不是远程。你正在学习C++的哪本书? – 2011-05-10 09:33:46

+1

唯一的区别是第二个没有空终止符...但我第二个unapersson的问题:) – 2011-05-10 09:34:52

+5

[我只能重复自己](http://stackoverflow.com/q/5947805/1968):获得一本C++书籍并学习该语言的基础知识。我们不能在这里教你每一个方面。你甚至缺乏对语言最基本的理解。 – 2011-05-10 09:35:13

回答

9

号这不是一个switch语句 这两条线都与初始化变量声明不同的是,:。

char short_string[] = "abc" 

Declares宣布SHORT_STRING空结尾的C字符串
内存转储:0x61, 0x62, 0x63, 0x00
可变长度以字节:4

虽然第二行:

char short_string[] = {'a', 'b', 'c'} 

声明SHORT_STRING作为字节数组。
存储器转储:0x61, 0x62, 0x63
可变长度以字节为单位:3

0

第一条语句声明并初始化一个字符串与内容abc(包括终止零) - 这是一个字符数组,它是四个字符长。

第二条语句声明了一个字符数组三个大字abc - 这是几乎同样的事情,第一,除了没有终止零(不正确的字符串)。

另请参见:C/C++中的所有语句都必须以分号结尾。

0

不同的是第一个选项将分配三个字符和结尾的空('00' ) 第二个选项将分配相同的三个字符,但没有结尾的空,并会造成问题是您尝试使用任何的str ...功能家族。

相关问题