**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
13天前关闭。
Improve this question
我有一个二维的char
数组(一个字符串数组),当我试图将一个字符串赋给一个元素时,出现了一个错误,说“数组类型'char *[8]'是不可赋值的”。
这是我的代码:
int main() {
char array[4][8];
array[0] = "test";
}
如何正确地分配二维数组的元素?
5条答案
按热度按时间kg7wmglp1#
我有一个二维字符数组(字符串数组)。
这是我的代码:
char *array[4][8];
这不是一个二维的字符数组,而是一个二维的字符指针数组。
要获取可用作字符串数组的二维字符数组,请执行以下操作
现在您可以保存4个字符串,最大长度为7。
C无法使用
=
赋值字符串。在C中,您可以使用strcpy
将字符串复制到变量中,如下所示:但是,您可以使用
=
使用字符串初始化数组,如下所示:例如打印如下:
输出将为:
数组的第二维可用于访问字符串的各个字符。例如:
将从
hello
打印o
ljo96ir52#
也许可以使用二维数组
array[0][0] = "test;"
不过请注意,在您的例子中,这是一个指向字符串常量的指针的二维数组。由于字符串常量是只读的,因此应该声明为
const char *array[4][8];
。如果您需要读/写内存,则应该将指针分配给动态分配的内存。h9vpoimq3#
在上面的代码中,你首先创建了一个
char*
的二维数组。错误发生在第二行。你试图给array[0]
赋值,但是由于数组是一个二维数组,array[0]
并不指向char*
,而是指向一个char*
数组。正确的方法是:这会将第一个数组中的第一个元素分配给“test”。
hmmo2u0o4#
需要使用正确的数组下标,
array[0]
的类型是char *[8]
,但是需要char *
类型的array[0][0]
,然后需要分配一个可写字符串,例如strdup()
:您还可以将类型更改为
const
,因为您无法更改该字符串文字:或者,您可能打算将数据复制到数组中:
jchrr9hc5#
错误可能是因为您指定了数组的行而不是列(请记住您使用的是二维数组)。
试试这个: