我有一个char数组数组:
char *words[] = {"word1", "word2", "word3"};
我了解到你可以写*单词来访问第一个值。因此,如果我使用*单词,我会得到“word1”,因为那是单词所指向的。
为什么这对这个数组不起作用?
char **words = {"word1", "word2", "word3"};
似乎这应该做同样的事情。
答案 0 :(得分:1)
可以使用以下语法初始化数组:
int array[] = {1, 2, 3};
但是,无法使用以下语法初始化指针:
int* array = {1, 2, 3};
这就是语言的定义方式。
同样的类比适用于您发布的代码中的words
:
char *words[] = {"word1", "word2", "word3"};
初始化一个char*
。
char **words = {"word1", "word2", "word3"};
不是语言支持的语法,用于初始化指向char*
的指针。