了解C ++-“字符文字”与“字符串文字”

时间:2019-01-13 18:09:44

标签: c++ char

我正在读一本教科书,讲的是“字符文字”还是“字符串文字”。它说:

“ A”存储为65

“ A”存储为65 0

char letter;
letter = 'A' // this will work
letter = "A" // this will not work!

教科书的解释使我感到困惑。它说:“因为char变量只足够容纳一个字符,所以不能为它们分配字符串文字。”谁能进一步解释,这不是我的脑海。谢谢您的时间

3 个答案:

答案 0 :(得分:0)

您可能会缺少的事实是字符串可以是任意长度。编译器会以您键入的方式将字符串放置在程序/内存中的某个位置,但是它需要知道字符串的结尾!这种类型的字符串称为零终止或零终止。这仅表示字符串是实际的字符串数据,后跟一个值为0的单个字节。

因此在示例中,'A' character A。在内存中,它可能紧随其后是一些垃圾数据/无关数据,但这很好,因为编译器只知道曾经用过那个字节。

"A" string A。在内存中,它必须后面跟一个空终止符,否则该程序可能会感到困惑,因为在该字符串之后可能会存在垃圾数据。 / p>

答案 1 :(得分:0)

将字符串视为字符数组,其中该数组的一个元素就是“字符文字”。

答案 2 :(得分:0)

您应该看到以下内容: Single quotes vs. double quotes in C or C++

正如大家在这里所说的,请考虑数组。 字符仅是一个字母,数字或符号,并且用简单的引号声明。但是,当用双引号声明时,实际上是在指出这是关于字符串或数组的。因此,您应该像数组一样声明变量。例如:

char letter[] = "A";

char *letter = "A";

如果要使用静态数组,可以尝试以下操作:

char letter[5] = {'H','E','L','L','O'};

如果要查看其他点视图,可以阅读以下内容: http://www.cplusplus.com/doc/tutorial/ntcs/

希望我有帮助。

相关问题