2016-02-26 32 views
-4

我有字符数组的数组:为什么* words []不等于**单词?

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

我了解到,你可以写*字访问的第一个值。所以如果我使用*字,我会得到“字1”,因为这是什么字指向。

为什么这不适用于此阵列?

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

看来这应该也是这样。

+0

堆栈分配vs堆 –

+1

指针数组和指针指针数不相同 –

+1

@self:你是什么意思?没有上下文,你的评论是错误的。 – Olaf

回答

1

阵列可以使用语法进行初始化:

int array[] = {1, 2, 3}; 

然而,指针不能使用语法初始化:

int* array = {1, 2, 3}; 

这就是语言是如何定义的。

同样的比喻适用于words在发布代码:

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

初始化的char*阵列。

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

不是由语言支持的语法的指针初始化为char*

+0

它总是让我困惑,*是​​名字而不是类型。谢谢 – Goldi

+1

@DennisvonEich,我希望答案有一点帮助。 –

+1

@ DennisvonEich:空白被忽略。你可以做'char * c',你可以做'char * c',你可以'char * c'。 – EOF

相关问题