使用字符串数组初始化char**[duplicate]

tquggr8v  于 2023-01-01  发布在  其他
关注(0)|答案(1)|浏览(130)
    • 此问题在此处已有答案**:

Initialize array of strings(3个答案)
2天前关闭。
这是关于单字符指针和双字符指针的。这里我尝试用一个字符串数组初始化一个双指针,同时定义新指针。
我试过了

char arry[] = "Hello World"
char* cptr = "Hello World"

它工作正常,不同的是第二行只是只读的。同样,我尝试使用双指针

char *darry[] = {"Hello", "World", "C", "Ubuntu"}; 
char **da = {"Hello", "World", "C", "Ubuntu"};

我原以为双指针(da)会和单指针一样工作,但是它给了我一个错误。有人能给我指出正确的方向吗?谢谢

guykilcj

guykilcj1#

char *darry[]是一个数组。
{"Hello", "World", "C", "Ubuntu"}char *的 * 数组 * 的有效初始值设定项。
char **da是指针。
char **da = {"Hello", "World", "C", "Ubuntu"};失败,因为{"Hello", "World", "C", "Ubuntu"}不是指针的有效初始值设定项。
要初始化指向数组第一个元素的非char *指针,请使用 compound literal 构成char *数组。然后,作为初始化的一部分,array 将转换为其第一个元素的地址,即char **

//          v-----------------------------------------v Array of char *.
char **da = (char *[]){"Hello", "World", "C", "Ubuntu"};

相关问题