Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何创建const char的静态const数组*_C++ - Fatal编程技术网

C++ 如何创建const char的静态const数组*

C++ 如何创建const char的静态const数组*,c++,C++,我试过下面这句话: static const const char* values[]; 但我在VC++警告C4114上得到以下警告: 多次使用同一类型限定符 正确的声明是什么?目标是创建一个不可变的c字符串数组。试试看 static const char* const values[]; 想法是将两个常量放在*的两侧:左侧属于字符(常量字符),右侧属于字符*(常量指针指向字符)您编写的常量常量而不是静态常量字符*常量值[](其中,您将指针和基础值定义为const) 此外,您还需要对其进行

我试过下面这句话:

static const const char* values[]; 
但我在VC++警告C4114上得到以下警告:

多次使用同一类型限定符

正确的声明是什么?目标是创建一个不可变的c字符串数组。

试试看

static const char* const values[];

想法是将两个
常量放在
*
的两侧:左侧属于
字符
(常量字符),右侧属于
字符*
(常量指针指向字符)

您编写的
常量常量
而不是
静态常量字符*常量值[](其中,您将指针和基础值定义为
const

此外,您还需要对其进行初始化:


静态常量字符*常量值[]={“字符串一”、“字符串二”}

我是否理解正确,第一个常量用于字符串,第二个常量用于数组?为了澄清关键字
const
:A
const
始终与它左边的“项”相关。例外情况是,当const是表达式中的第一个单词时,它就与它的右项相关。因此,为了非常正确,可以将字符串定义为
static char const*const values[]
,它可以从右到左读取:值是指向const chars的常量指针数组,所有这些都是静态的。@AquilaRapax以这种方式编写定义实际上有很多原因。typedef在其他方面非常混乱:
typedef const char*CPtr;const-CPtr-var
并不是它看起来的意思,其中as
typedef char const*CPtr;CPtr常数var更清晰。@JamesKanze:
[]
的优先级大于
*
,并且由于
*
是从右侧添加的,所以
常量也是如此。没关系,我在回答9年前的问题。