char short_string[] = "abc"
char short_string[] = {'a', 'b', 'c'}
我认为不同的是第二行是一个switch语句,它需要来自用户的输入(ab或c,因为第一行更多是一个语句....这是对的吗?
答案 0 :(得分:9)
没有。这不是一个转换声明。 这两行都是初始化的变量声明。区别在于:
char short_string[] = "abc"
声明short_string null终止的c-string
内存转储:0x61, 0x62, 0x63, 0x00
可变长度(以字节为单位):4
虽然第二行:
char short_string[] = {'a', 'b', 'c'}
将short_string声明为字节数组
内存转储:0x61, 0x62, 0x63
可变长度(以字节为单位):3
答案 1 :(得分:0)
第一个语句声明并初始化一个内容为abc
的字符串(包括终止为零) - 这是一个长度为四个字符的字符数组。
第二个语句声明一个包含三个字符a
,b
和c
的字符数组 - 它的几乎与第一个相同,除了没有终止零(不是正确的字符串)。
另外: C / C ++中的所有语句都必须以分号结束。
答案 2 :(得分:0)
区别在于第一个选项将分配三个字符和一个尾随空(x'00') 第二个选项将分配相同的三个字符,但没有尾随null,如果您尝试使用任何str ....系列函数,则会导致问题。