繁体   English   中英

使用C中的两个字符串初始化const char * const *

[英]Initialise a const char * const * with two strings in C

有没有人知道用两个文字字符串( "abcdefg""hijklmnop" )初始化const char * const *的正确方法? 我读到很难/不可能从char **转换,但我可能错了。

任何帮助非常感谢。

而不是指针指针,使用指针数组并像这样初始化它们:

const char * const strs[] = {"abcdefg", "hijklmnop"};

因此,不是指向字符串常量的常量指针,而是现在有一个常量数组来表示字符串常量。 C不允许使用大括号初始化指针(除非它们中只有一个值),但它允许以这种方式初始化数组。

在C99及更高版本中,您可以使用复合文字来创建数组,并将其用作指针的初始化程序。

const char * const *p = (const char *[]){"abcdefg", "hijklmnop"};

这相当于使用Kninnug的答案中的命名数组,以及一个带有初始化器的指针,该初始化器按名称指向数组:

const char * const strs[] = {"abcdefg", "hijklmnop"};
const char * const *p = strs;

除了数组中的名称( strs )在一个中并且在另一个中是匿名的这一事实。

并且还让我补充一点,这些解决方案都不涉及将char **转换为const char * const * 它们的构造方式,每个char *被单独转换为const char * ,因为它被用作一个数组元素的初始化器,它是一个const char * 代码中没有任何char **

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM