如何复制和分配数组数组?

时间:2015-12-15 00:07:37

标签: c arrays

  int zero[5][4] = {
    { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }
  };
  int m1[5][4] = {
    { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 }
  };

  //errors here
  m1 = zero;
  m1 = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } };
  m1[0] = { 0, 0, 0, 0 };

这没有语法吗?我是否必须使用带索引的循环来实现此目的?

1 个答案:

答案 0 :(得分:4)

在C中,数组不可分配或不能在赋值(=)运算符的左侧。使用memcpy

memcpy(m1, zero, sizeof(zero)); // Assuming size of 'm1' is no less than the size of 'zero'  

您可以使用memset设置一个具有常量值的数组,例如0-1

memset(m1, 0, sizeof(m1));