为什么*单词[]不等于**单词?

时间:2016-02-26 17:03:44

标签: c arrays pointers

我有一个char数组数组:

char *words[] = {"word1", "word2", "word3"};

我了解到你可以写*单词来访问第一个值。因此,如果我使用*单词,我会得到“word1”,因为那是单词所指向的。

为什么这对这个数组不起作用?

char **words = {"word1", "word2", "word3"};

似乎这应该做同样的事情。

1 个答案:

答案 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*的指针。