如何定义一个字符串数组,从定义中分配赋值?

时间:2013-06-24 11:33:25

标签: c arrays string pointers

我想定义一个字符串数组,定义和赋值分为两行,如下所示:

char **test;
test = { "Snakes", "on", "a", "Plane" }; // <--
printf("Test: %s\n", test[3]);

但是我在指定的行中收到错误:

Line 4: error: expected expression before '{' token

这里有什么问题?是否有一个很好的教程解释所有数组,指针,声明,定义,C字符串之间和之间的分配?

3 个答案:

答案 0 :(得分:3)

您无法通过这种方式分配数组。 在您的情况下,您的数组未分配。

这样做的方法是:

char    *test[4];

test[0] = "Snake";
test[1] = "on";
test[2] = "a";
test[3] = "plane";

答案 1 :(得分:2)

它不能只在

之前的C99的初始化表达式中写入

E.g。

char *test[]={ "Snakes", "on", "a", "Plane" };

可以在C99

中编写如下

E.g。

char **test;
test = (char*[]){ "Snakes", "on", "a", "Plane" };

答案 2 :(得分:0)

你不能这样做。

如上所述,要么在声明时这样做。

为每个单词使用内置函数(strcpy,memcpy)。

最好的方法是创建一个函数,使用上面的函数或char by char将相应的单词添加到数组中。