我是C ++的新手,我在下面的代码片段中遇到了一些奇怪的事情。
const char* keys = "hello" "world";
std::cout << keys << std::endl;
以上代码在控制台中显示 helloworld 。在同一条语句中将两个字符串文字分配给const char *在语法上是否有效?如果可以,它将如何存储在内存中?
答案 0 :(得分:5)
这是C ++(和C)的规则,在编译之前(但在宏扩展IIRC之后)将相邻的字符串文字串联在一起。
这发生在任何地方,不仅是赋值语句的一部分。
答案 1 :(得分:4)
根据[lex.string],带引号(甚至带空引号)内的字符序列是字符串字面量。
...相邻的字符串文字被串联。
所以
const char* keys = "hello" "world";
与:
const char* keys = "helloworld";