簡體   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