[英]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.