【发布时间】:2015-10-04 16:47:42
【问题描述】:
我是 C 新手,我正在尝试使用多维数组。我有以下示例,我试图初始化一个多维数组:
char matrix[5][10];
matrix[0] = {'0','1','2','3','4','5','6','7','8','9'};
matrix[1] = {'a','b','c','d','e','f','g','h','i','j'};
matrix[2] = {'A','B','C','D','E','F','G','H','I','J'};
matrix[3] = {'9','8','7','6','5','4','3','2','1','0'};
matrix[4] = {'J','I','H','G','F','E','D','C','B','A'};
乍一看,这种类型的声明似乎是有效的,因为多维数组是数组的数组;但是,此示例无法正确编译,我不完全确定原因。
我知道我可以使用以下符号初始化多维数组:
char matrix2[5][10] =
{
{'0','1','2','3','4','5','6','7','8','9'},
{'a','b','c','d','e','f','g','h','i','j'},
{'A','B','C','D','E','F','G','H','I','J'},
{'9','8','7','6','5','4','3','2','1','0'},
{'J','I','H','G','F','E','D','C','B','A'},
};
但是,如果我在声明时不知道数组的内容并且想在以后用数据填充这个数组怎么办。我可以按如下方式初始化每个单独的元素:
matrix[0][0] = '0';
matrix[0][1] = '1';
matrix[0][2] = '2';
etc....
我想知道是否可以使用我原来的方法声明每个数组:
matrix[0] = {'0','1','2','3','4','5','6','7','8','9'};
matrix[1] = {'a','b','c','d','e','f','g','h','i','j'};
etc...
我尝试使用strcpy如下:
strcpy(matrix[0], "012345678");
strcpy(matrix[1], "abcdefghi");
如果多维数组是一个以空字符结尾的字符串数组,这似乎可行,但它等效于整数或其他数据结构的多维数组。任何帮助表示赞赏。谢谢。
【问题讨论】:
-
使用
memcpy而不是strcpy。
标签: c arrays multidimensional-array