c++中字符串字面值的类型是什么?

What is the type of a string literal in C++?

本文关键字:类型 是什么 字面值 字符串 c++      更新时间:2023-10-16

例如,字符串字面值"Hello"是const char[6]还是const char*的类型

字符串字面值"Hello"的类型为"array of 6 const char "

普通字符串字面值和UTF-8字符串字面值也被称为窄字符串字面值。窄字符串字面值的类型为" array of n const char ",其中n是字符串[…]

的大小。
然而,

可以通过数组到指针的转换转换为const char*类型。数组到指针的转换产生指向数组第一个元素的指针。

标准定义它为" n const char的数组",所以它是const char[n] (n是字符串的大小,包括结束的NUL字节)。

第7节,§2.14.15:

窄字符串字面值的类型为"array of n const char",其中n是下面定义的字符串的长度,并具有静态存储持续时间。