如何覆盖2D数组中的第一行?

时间:2015-11-22 17:59:54

标签: c multidimensional-array

如果我有一个名为M [4] [4]的4x4数组初始化为全零,那么如何在程序中稍后更改第一行节点的值?

我问的原因是因为在初始化矩阵时,只需要做:

int M[4][4] = {{1, 2, 3, 4}};

但如果我在代码中的其他地方执行此操作,则无法正常工作。

我是否只需要使用循环来完成目标,或者我做错了什么?

1 个答案:

答案 0 :(得分:3)

嗯,您不需要自定义功能来执行此操作,您可以使用memcpy

double M[2][4] = { {0.1, 0.2, 0.3, 0.4}, {1.2, 1.1, 1.0, 1.4} };
memcpy(M, (const double[4]){1.2, 1.1, 1.0, 1.4}, sizeof(double)*4);

如果您想知道如何编写第二行:

double M[2][4] = { {0.1, 0.2, 0.3, 0.4}, {1.2, 1.1, 1.0, 1.4} };
memcpy(&M[1][0], (const double[4]){1.2, 1.1, 1.0, 1.4}, sizeof(double)*4);