我想定义一个字符串数组,定义和赋值分为两行,如下所示:
char **test;
test = { "Snakes", "on", "a", "Plane" }; // <--
printf("Test: %s\n", test[3]);
但我在指示的行中收到错误:
Line 4: error: expected expression before '{' token
这里有什么问题?是否有一个很好的教程来解释所有的数组、指针、声明、定义、C 字符串之间的赋值?
您不能通过这种方式分配数组。在您的情况下,您的数组未分配。
这样做的方法是:
char *test[4];
test[0] = "Snake";
test[1] = "on";
test[2] = "a";
test[3] = "plane";
它不能只写在 C99 的初始化表达式之前
例如
char *test[]={ "Snakes", "on", "a", "Plane" };
在C99中可以写成如下
例如
char **test;
test = (char*[]){ "Snakes", "on", "a", "Plane" };
你不能这样做。
或者,如上所述,在声明时进行。
对每个单词使用内置函数(strcpy,memcpy)。
最好的方法是创建一个函数,使用上面的函数或逐字符的字符将各个单词添加到数组中。