使用字符串文字和不同字符列表初始化数组声明时有什么区别?
问题描述:
char short_string[] = "abc"
char short_string[] = {'a', 'b', 'c'}
我认为不同的是,第二行是一个switch语句,它需要用户输入(ab或c,因为第一行更多是一个语句....是吗?使用字符串文字和不同字符列表初始化数组声明时有什么区别?
。
答
号这不是一个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
答
第一条语句声明并初始化一个字符串与内容abc
(包括终止零) - 这是一个字符数组,它是四个字符长。
第二条语句声明了一个字符数组三个大字a
,b
和c
- 这是几乎同样的事情,第一,除了没有终止零(不正确的字符串)。
另请参见:C/C++中的所有语句都必须以分号结尾。
答
不同的是第一个选项将分配三个字符和结尾的空('00' ) 第二个选项将分配相同的三个字符,但没有结尾的空,并会造成问题是您尝试使用任何的str ...功能家族。
不是远程。你正在学习C++的哪本书? – 2011-05-10 09:33:46
唯一的区别是第二个没有空终止符...但我第二个unapersson的问题:) – 2011-05-10 09:34:52
[我只能重复自己](http://*.com/q/5947805/1968):获得一本C++书籍并学习该语言的基础知识。我们不能在这里教你每一个方面。你甚至缺乏对语言最基本的理解。 – 2011-05-10 09:35:13